연산자 우선순위는 연산자를 실행하는 순서를 결정합니다. 우선순위가 높은 연산자가 먼저 실행됩니다.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
결합성
결합성은 같은 우선순위를 가진 연산자의 처리 순서를 결정합니다. 다음 형태의 표현식을 살펴보겠습니다.
a 연산자 b 연산자 c
좌결합성(왼쪽에서 오른쪽)은 위의 표현식이 (a 연산자 b) 연산자 c
로 처리됨을 의미합니다. 반면 우결합성(오른쪽에서 왼쪽)을 가진다면 a 연산자 (b 연산자 c)
로 해석합니다. 할당 연산자는 우결합성을 가지므로 다음과 같이 작성할 수 있습니다.
a = b = 5;
할당 연산자는 할당한 값을 반환하기 때문에, 위 코드를 실행하면 a
와 b
에 모두 5를 할당합니다. 순서대로 살펴보자면 처음에 b
가 5로 설정되고, a
도 b = 5
가 반환하는 값, 즉 그 할당 연산자의 오른쪽 피연산자인 5로 할당됩니다.
표
다음 표는 높은 우선순위(20)부터 낮은 우선순위(1) 순서로 정렬됐습니다.
우선순위 | 연산자 유형 | 결합성 | 연산자 |
---|---|---|---|
20 | 그룹 | 없음 | ( … ) |
19 | 멤버 접근 | 좌결합성 | … . … |
계산된 멤버 접근 | 좌결합성 | … [ … ] |
|
new (매개변수 리스트 존재) |
없음 | new … ( … ) |
|
함수 호출 | 좌결합성 | … ( … ) |
|
18 | new (매개변수 리스트 생략) |
우결합성 | new … |
17 | 후위 증가 | 없음 | … ++ |
후위 감소 | … -- |
||
16 | 논리 NOT | 우결합성 | ! … |
비트 NOT | ~ … |
||
단항 양부호 | + … |
||
단항 부정 | - … |
||
전위 증가 | ++ … |
||
전위 감소 | -- … |
||
typeof |
typeof … |
||
void |
void … |
||
delete |
delete … |
||
await |
await … |
||
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 | 쉼표 / 시퀀스 | 좌결합성 | … , … |