Источник: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
Приоритет операторов определяет порядок, в котором операторы выполняются. Операторы с более высоким приоритетом выполняются первыми.
Пример:
3 + 4 * 5 // возвращает 23
Оператор умножения *
имеет более высокий приоритет, чем оператор сложения +
и, таким образом будет выполняться первым.
Ассоциативность определяет порядок, в котором операторы с одинаковым приоритетом обрабатываются. Например, рассмотрим выражение:
a OP b OP c
Левая ассоциативность (left-to-right) означает, что оно обрабатывается как (a OP b) OP c
, в то время как правая ассоциативность (right-to-left) означает, что оно интерпретируется как a OP (b OP c)
. Операторы присваивания являются право-ассоциативными, так что Вы можете написать:
a = b = 5;
с ожидаемым результатом, что a
и b
будут равны 5. Это происходит, потому что оператор присваивания возвращает тот результат, который присваивает. Сначала b
становится равным 5, затем a
принимает значение b
.
Данная таблица упорядочена с самого высокого приоритета (1) до самого низкого (18).
Precedence | Operator type | Associativity | Individual operators |
---|---|---|---|
1 | member | left-to-right | . [] |
1 | new | right-to-left | new |
2 | function call | left-to-right | () |
3 | increment | n/a | ++ |
3 | decrement | n/a | -- |
4 | logical-not | right-to-left | ! |
4 | bitwise not | right-to-left | ~ |
4 | unary + | right-to-left | + |
4 | unary negation | right-to-left | - |
4 | typeof | right-to-left | typeof |
4 | void | right-to-left | void |
4 | delete | right-to-left | delete |
5 | multiplication | left-to-right | * |
5 | division | left-to-right | / |
5 | modulus | left-to-right | % |
6 | addition | left-to-right | + |
6 | subtraction | left-to-right | - |
7 | bitwise shift | left-to-right | << >> >>> |
8 | relational | left-to-right | < <= > >= |
8 | in | left-to-right | in |
8 | instanceof | left-to-right | instanceof |
9 | equality | left-to-right | == != === !== |
10 | bitwise-and | left-to-right | & |
11 | bitwise-xor | left-to-right | ^ |
12 | bitwise-or | left-to-right | I |
13 | logical-and | left-to-right | && |
14 | logical-or | left-to-right | II |
15 | conditional | right-to-left | ?: |
16 | yield | right-to-left | yield |
17 | assignment | right-to-left | = += -= *= /= %= <<= >>= >>>= &= ^= I= |
18 | comma | left-to-right | , |