JavaScript | JavaScript 演算子の優先順位 一覧表(初心者向け)

javascrpit JavaScript
スポンサーリンク

「右結合 vs 左結合」を可視化した図解

「右結合」と「左結合」は、同じ優先順位の演算子が並んだときに、どちらの方向から評価するかを決めるルールです。
ここを図で理解すると、JavaScript の「式の流れ」が一気にスッキリします。

算子の結合規則(Associativity)

種類意味代表的な演算子
🔹 左結合 (Left-to-right)左から順に評価する+, -, *, /, %, <, >, &&, `
🔸 右結合 (Right-to-left)右から順に評価する=, **, ? :, ++(前置)など

図で見る:左結合の流れ

例:

a - b - c
JavaScript
左結合(left → right):
   ┌────┐
   │ a - b │ - c
   └────┘

つまり:

(a - b) - c
JavaScript

👉 左から順に計算していきます。
算術演算子(+, -, *, /, %)や比較演算子などはこれです。

図で見る:右結合の流れ

例①(代入演算子):

x = y = z = 5;
JavaScript
右結合(right → left):
x = (y = (z = 5))

👉 一番右の z = 5 から評価され、順に左へ伝わります。
結果:すべて x, y, z が 5 になります。

例②(べき乗 **):

2 ** 3 ** 2
JavaScript
右結合(right → left):
2 ** (3 ** 2)

👉 (3 ** 2) が先に計算されるため、結果は
2 ** 9 = 512

直感的なイメージ図

左結合:値が左から右へ流れる
  a  →  b  →  c
   \__/   ↓
   演算 → 次の演算へ

右結合:値が右から左へ伝わる
  a  ←  b  ←  c
         ↑
       右側を先に評価

まとめ(覚え方)

タイプ結合方向覚え方
左結合左 → 右「通常の計算の流れ」
右結合右 → 左「代入・条件・べき乗」など特殊なもの

困ったら括弧 ()
自分が意図する順番で明示すれば、どんな場合も安全です。

JavaScript 演算子の優先順位一覧表(上ほど優先度が高い)

優先順位演算子説明結合方向
20()グループ化(括弧内を先に評価)
19. [] ?.()プロパティ・要素アクセス、オプショナルチェーン左→右
18new(引数あり)コンストラクタ呼び出し
17++ --(後置)後置インクリメント/デクリメント
16! ~ + - ++ -- typeof void delete await単項演算子(前置)右→左
15**べき乗(右結合!)右→左
14* / %乗算・除算・剰余左→右
13+ -加算・減算左→右
12<< >> >>>ビットシフト左→右
11< <= > >= in instanceof比較左→右
10== != === !==等価・厳密等価左→右
9&ビット AND左→右
8^ビット XOR左→右
7``ビット OR
6&&論理 AND(短絡評価)左→右
5``
4??ヌル合体演算子(null / undefined チェック)左→右
3?:条件(三項)演算子右→左
2=, +=, -=, *=, /=, %=, **=, &&=, `=, ??=`
1,カンマ演算子(最後の値を返す)左→右

優先順位を意識するポイント

  • */+ よりも先に計算される。
  • **(べき乗)は 右結合2 ** 3 ** 22 ** (3 ** 2)(=512)。
  • 代入演算子(= など)や条件演算子(?:)も 右結合
  • 括弧 () が最優先。わからないときは括弧で囲むのが安全。

例で確認

let result = 10 + 2 * 3 ** 2;
// まず 3 ** 2 = 9 → 2 * 9 = 18 → 10 + 18 = 28

let x = 1;
let y = 2;
let z = 3;
let a = x + y * z;  // 1 + (2 * 3) = 7

let b = (x + y) * z;  // 括弧で順序を変える → (1 + 2) * 3 = 9
JavaScript
タイトルとURLをコピーしました