JavaScript を正確に理解するには、演算子の優先順位(precedence)と結合規則(associativity)を知っておくことが大切です。
これが分かると「どの演算が先に実行されるか」が一目で判断できるようになります。
JavaScript 演算子の優先順位 一覧表(初心者向け)
| 19 | . [] ?. | メンバーアクセス / オプショナルチェーン | 左から右 | obj.key, arr[0], obj?.prop |
| 18 | new(引数あり) | インスタンス生成 | 右から左 | new Date() |
| 17 | ()(関数呼び出し) | 関数呼び出し | 左から右 | myFunc(x) |
| 16 | ++ --(後置) | インクリメント/デクリメント | 左から右 | x++, y-- |
| 15 | ! ~ + - typeof void delete await ++ --(前置) | 単項演算子 | 右から左 | !a, typeof b, ++x |
| 14 | ** | べき乗 | 右から左 | 2 ** 3 ** 2 → 2 ** (3 ** 2) |
| 11 | << >> >>> | シフト演算 | 左から右 | x << 2 |
| 10 | < <= > >= in instanceof | 比較演算 | 左から右 | a < b, key in obj |
| 9 | == != === !== | 等価・不等価 | 左から右 | a === b |
| 5 | && | 論理 AND(短絡評価) | 左から右 | a && b |
| 3 | ? : | 条件(三項)演算子 | 右から左 | a > 0 ? 1 : -1 |
| 2 | = += -= *= /= %= **= &= ` | = ^= <<= >>= >>>= &&= | | = ??=` |
| 1 | , | カンマ演算子 | 左から右 | (a = 1, b = 2) |
覚え方のコツ
- 「数式に近いものほど優先順位が高い」
→ * / % は + - より先、() は最優先
- 「代入や条件は最後に評価される」
→ = や ? : は一番後ろの方
- 「右結合」を覚えておく代表例
→ =、**、? : は 右から評価
例で確認!
let x = 2 + 3 * 4;
// → 2 + (3 * 4) = 14 (掛け算が先)
let y = 2 ** 3 ** 2;
// → 2 ** (3 ** 2) = 512 (べき乗は右から)
let z = a || b && c;
// → a || (b && c) (ANDがORより優先)
JavaScript
まとめ
- 括弧
() を使えば、どんな複雑な式でも安全・確実に制御できる。
- 曖昧なときは「先に評価してほしい部分を括弧で囲む」のが鉄則。
- 覚え方のコツ:
「括弧 → 単項 → べき乗 → 掛け算・割り算 → 足し算・引き算 → 比較 → 等価 → 論理 → 代入 → カンマ」