연산자 우선순위는 연산자가 실행될 순서를 결정한다. 우선순위가 높은 연산자일수록 먼저 실행된다.
다음은 일반적인 예이다.
3 + 4 * 5 // 23을 반환한다.
곱셈 연산자(‘*
’)는 덧셈 연산자(‘+
’)보다 높은 우선순위를 가지기에 먼저 실행된다.
결합성
결합성은 같은 우선순위를 가진 연산자들의 처리 순서를 결정한다. 예컨대, 다음 표현식에 주목하라.
a 연산자 b 연산자 c
좌결합성은(왼쪽에서 오른쪽으로 결합한다.) 이것이 (a 연산자 b) 연산자 c
로 처리됨을 뜻한다. 반면에 우결합성(오른쪽에서 왼쪽으로 결합한다.)은 이것이 a 연산자 (b 연산자 c)
로 해석됨을 뜻한다. 대입 연산자는 우결합성을 띠므로 다음과 같이 쓸 수 있다.
a = b = 5;
이 구문이 실행되면 a
와 b
는 5가 된다. 이는 대입 연산자가 대입한 값을 반환하기 때문이다. 처음에 b
가 5로 설정된다. 그 다음에 a
도 b = 5
가 반환하는 값, 즉 그 대입 연산의 우측 피연산자인 5로 설정된다.
표
다음 표는 우선순위를 기준으로 내림차순으로 정렬되었다.
우선순위 | 연산자 유형 | 결합성 | 연산자 |
---|---|---|---|
19 | 묶음(괄호) | 없음 | ( … ) |
18 | 멤버 접근 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … . … |
연산된 멤버 접근 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … [ … ] |
|
객체 생성(인수 목록 있음) | 없음 | new … ( … ) |
|
17 | 함수 호출 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … ( … ) |
객체 생성(인수 목록 없음) | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | new … |
|
16 | 후위 증가 | 없음 | … ++ |
후위 감소 | 없음 | … -- |
|
15 | 논리적 NOT(논리 부정) | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | ! … |
비트 NOT(비트 반전) | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | ~ … |
|
수화(단항 플러스) | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | + … |
|
음수화(단항 부정) | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | - … |
|
전위 증가 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | ++ … |
|
전위 감소 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | -- … |
|
자료형 구하기 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | typeof … |
|
반환 무시 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | void … |
|
제거 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | delete … |
|
14 | 거듭제곱 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | … ** … |
곱셈 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … * … |
|
나눗셈 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … / … |
|
나머지 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … % … |
|
13 | 덧셈 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … + … |
뺄셈 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … - … |
|
12 | 비트열 좌측 시프트 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … << … |
비트열 우측 시프트(산술 우측 시프트) | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … >> … |
|
비트열 부호 없는 우측 시프트(논리 우측 시프트) | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … >>> … |
|
11 | 작음 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … < … |
작거나 같음 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … <= … |
|
큼 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … > … |
|
크거나 같음 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … >= … |
|
안 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … in … |
|
인스턴스 여부 판단 | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … instanceof … |
|
10 | 일치 판단(비교) | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … == … |
비일치 판단(비교) | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … != … |
|
엄밀한 일치 판단(비교) | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … === … |
|
엄밀한 비일치 판단(비교) | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … !== … |
|
9 | 비트 AND | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … & … |
8 | 비트 XOR | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … ^ … |
7 | 비트 OR | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … | … |
6 | 논리적 AND | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … && … |
5 | 논리적 OR | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … || … |
4 | 조건부 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | … ? … : … |
3 | 대입 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | … = … |
… += … |
|||
… -= … |
|||
… **= … |
|||
… *= … |
|||
… /= … |
|||
… %= … |
|||
… <<= … |
|||
… >>= … |
|||
… >>>= … |
|||
… &= … |
|||
… ^= … |
|||
… |= … |
|||
2 | 넘김 | 우결합성(오른쪽에서 왼쪽으로 결합한다.) | yield … |
1 | 전개 | 없음 | ... … |
0 | 연속(쉼표) | 좌결합성(왼쪽에서 오른쪽으로 결합한다.) | … , … |