Источник: 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 | , |