JavaScript を正確に理解するには、演算子の優先順位(precedence)と結合規則(associativity)を知っておくことが大切です。
これが分かると「どの演算が先に実行されるか」が一目で判断できるようになります。
JavaScript 演算子の優先順位 一覧表(初心者向け)
| 優先順位(高い順) | 演算子 | 種類 | 結合方向 | 例 |
|---|
| 20 | () | グループ化 | 左から右 | (a + b) * c |
| 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) |
| 13 | * / % | 算術演算 | 左から右 | a * b / c |
| 12 | + - | 加減算 | 左から右 | a + b - c |
| 11 | << >> >>> | シフト演算 | 左から右 | x << 2 |
| 10 | < <= > >= in instanceof | 比較演算 | 左から右 | a < b, key in obj |
| 9 | == != === !== | 等価・不等価 | 左から右 | a === b |
| 8 | & | ビット AND | 左から右 | a & b |
| 7 | ^ | ビット XOR | 左から右 | a ^ b |
| 6 | ` | ` | ビット OR | 左から右 |
| 5 | && | 論理 AND(短絡評価) | 左から右 | a && b |
| 4 | ` | ??` | 論理 OR / null合体演算 |
| 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まとめ
- 括弧
()を使えば、どんな複雑な式でも安全・確実に制御できる。 - 曖昧なときは「先に評価してほしい部分を括弧で囲む」のが鉄則。
- 覚え方のコツ:
「括弧 → 単項 → べき乗 → 掛け算・割り算 → 足し算・引き算 → 比較 → 等価 → 論理 → 代入 → カンマ」
