概要
演算子の優先順位は、演算子が評価される順番を決定します。より高い優先順位の演算子は最初に評価されます。
よくある例:
3 + 4 * 5 // 23 を返す
乗算演算子 ("*
") は加算演算子 ("+
") より高い優先順位を持つので、最初に評価されます。
結合性
結合性は、同じ優先順位の演算子を処理する順番を決定します。例えば、次のような式を考えてみましょう。
a OP b OP c
左結合性 (左から右) とはこれを (a OP b) OP c
というように処理するという意味であり、対して右結合性 (右から左) はこれを a OP (b OP c)
というように解釈するという意味です。代入演算子は右結合性なので、
a = b = 5;
と書くことで、a
と b
が値 5 を得るという期待通りの結果を得ることができます。これは代入演算子が代入した値を返すためです。まず b
に 5 がセットされます。そして a
にも、代入演算子の右オペランドである b = 5
が返す 5 がセットされるのです。
表
以下の表は優先順位の最も高いもの (20) から最も低いもの (0) の順に並べられています。
優先順位 | 演算子の種類 | 結合性 | 各演算子 |
---|---|---|---|
20 | グループ化 |
n/a | ( … ) |
19 | メンバーへのアクセス |
左から右 | … . … |
計算値によるメンバーへのアクセス |
左から右 | … [ … ] |
|
new (引数を伴う) |
n/a | new … ( … ) |
|
18 | 関数呼び出し | 左から右 | … ( … ) |
new (引数なし) |
右から左 | new … |
|
17 | 後置インクリメント |
n/a | … ++ |
後置デクリメント |
n/a | … -- |
|
16 | 論理 NOT | 右から左 | ! … |
ビットごとの NOT | 右から左 | ~ … |
|
単項の + | 右から左 | + … |
|
単項の - | 右から左 | - … |
|
前置インクリメント | 右から左 | ++ … |
|
前置デクリメント | 右から左 | -- … |
|
typeof | 右から左 | typeof … |
|
void | 右から左 | void … |
|
delete | 右から左 | delete … |
|
15 | べき乗 | 右から左 | … ** … |
14 | 乗算 | 左から右 | … * … |
除算 | 左から右 | … / … |
|
モジュロ (剰余) | 左から右 | … % … |
|
13 | 加算 | 左から右 | … + … |
減算 | 左から右 | … - … |
|
12 | 左ビットシフト | 左から右 | … << … |
右ビットシフト | 左から右 | … >> … |
|
符号なし右ビットシフト | 左から右 | … >>> … |
|
11 | より小さい | 左から右 | … < … |
より小さいまたは等しい | 左から右 | … <= … |
|
より大きい | 左から右 | … > … |
|
より大きいまたは等しい | 左から右 | … >= … |
|
in | 左から右 | … in … |
|
instanceof | 左から右 | … instanceof … |
|
10 | 等しい | 左から右 | … == … |
等しくない | 左から右 | … != … |
|
厳密に等しい | 左から右 | … === … |
|
厳密には等しくない | 左から右 | … !== … |
|
9 | ビットごとの AND | 左から右 | … & … |
8 | ビットごとの XOR | 左から右 | … ^ … |
7 | ビットごとの OR | 左から右 | … | … |
6 | 論理 AND | 左から右 | … && … |
5 | 論理 OR | 左から右 | … || … |
4 | 条件 | 右から左 | … ? … : … |
3 | 代入 | 右から左 | … = … |
… += … |
|||
… -= … |
|||
… **= … |
|||
… *= … |
|||
… /= … |
|||
… %= … |
|||
… <<= … |
|||
… >>= … |
|||
… >>>= … |
|||
… &= … |
|||
… ^= … |
|||
… |= … |
|||
2 | yield | 右から左 | yield … |
yield* | 右から左 | yield* … |
|
1 | Spread | n/a | ... … |
0 | カンマ / シーケンス | 左から右 | … , … |