연산자 우선순위 |
1+2*3은 얼마일까요? 곱셈이 먼저 계산됩니다. |
예시) q=1+2*3; // 7 |
1 + 2 * 3 은 덧셈과 곱셈중 2 * 3이 먼저 계산되기 때문에
1+2 * 3
→ 1 + 6
→ 7 입니다.
이처럼 연산식을 차례대로 나열하는 경우, 연산이 먼저 진행되는 순서가 있는데요.
산술연산만 다뤄보겠습니다.
자바스크립트와 다른 컴퓨터언어는 연산자 우선순위가 다르니
다른 컴퓨터언어는 해당 언어 연산식 우선순위를 참조해 주시기 바랍니다.
여기서 순위는 Mozila 공식 사이트와 상이합니다. 해당 정보는 아래 URL을 참조해 주세요.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
1순위 : 괄호
괄호 |
( 1 + 2 ) * 3, 괄호 안이 먼저 계산됩니다. |
예시) x=(1+2)*3; // 9 |
연산자 우선 순위에서 어떤 연산자보다도 먼저 다뤄지는 것은 괄호입니다.
1+2*3의 경우 곱셈이 먼저 계산되지만, 의도적으로 1+2를 먼저 계산하려면 다음과 같이 괄호 기호 (…) 를 이용하여 연산식을 구성하면 됩니다
x=(1+2)*3; console.log(x); // 결과는 9 |
그 외 연산자 순서는 다음과 같습니다.
2순위 : 증감연산자 : ++a. --a;
3순위 : 거듭제곱 : **
4순위 : 곱셈, 나눗셈, 나머지 : *, /, %
5순위 : 덧셈, 뺄셈 : +, -
3순위와 4순위를 섞어 쓸 경우 3순위가 먼저 계산되나,
2*3**2 // 3**2를 먼저 계산 // => 2*9 // => 결과 18 |
같은 4순위 내에서의 연산자는 앞에서부터 차례대로 계산됩니다.
5%3/4*3 // 5%3 먼저 계산 // => 2/4*3 // 2/4먼저 계산 // => 0.5*3 // => 결과 1.5 |
7순위 : 증감연산자 : a++, a--;
* 복잡하기 때문에 증감연산자는 따로 처리하시길 권해 드립니다.
7순위는 공식사이트와 다른 필자의 의견입니다.
아래 코드를 실행하면, 9라는 결과가 나오는데요.
x=5; y=x++ + 4; // 결과 9 |
변수x에서 먼저 5를 꺼내 4와 더해주는 덧셈 연산이 끝나고 나서 증감연산자가 x 값을 1증가시켜줍니다.
덧셈보다 연산순서가 나중이지요.
하지만 대입 연산자보다는 우선순위는 높습니다.
그것은 아래 코드를 통해 알 수가 있는데요. 예측 밖의 결과를 볼 수 있거든요.
x=5; y=x++ + x++; // 11 출력 |
위 코드는 처음 x++에서 값 5 를 꺼낸 후 6으로 증가하고,
두번째 x++에서는 한번 증가된 값6을 다시 꺼내 7이 됩니다.
연산식에는 5 + 6 이 반영되어, 결과 11라는 결과가 도출되기 때문입니다.
그러니까 대입 연산자는 마지막에 실행이 되는 것이지요.
실제 이런 코드를 사용하는 경우는 없으니 이해하시는데 골머리를 앓으실 필요는 없습니다.
8순위. 대입연산자
변수에 결과를 대입하면서 연산을 하는 것을 대입 연산자라고 부릅니다.
a+=5; |
대입연산자는 = 기호가 함께 사용되면서 사칙연산을 이용한 연산을 하는 연산자입니다.
대입 연산자, =, +=, -=, *=, /=, **=, %= |
변수에 연산 결과값을 대입하면서 원래 들어 있는 값에 더하거나, 빼는 등의 산술 연산을 수행합니다. |
예시) a=5; a+=3; // 8 a-=2; // 6 a*=4; // 24 a/=8; // 3 a**=5; // 243 a%=120; // 3 |
변수A에 5라는 값이 들어 있다면,
A += 3; 이란 연산식을 실행할 경우 변수A에 3을 더해주겠다는 의미가 됩니다.
대입연산자 우측의 내용이 길 경우에는 이렇습니다.
변수B에 7이란 값이 들어 있는 경우,
B -= 2*3; 이란 연산식을 사용할 경우 먼저 우측의 2*3이 계산됩니다. 그래서 6이 계산되고,
변수B 에서 6을 빼주겠다는 것이기 때문에 1이란 결과가 남습니다.
이처럼 대입연산자는 좌변의 변수에 현재 들어있는 값을 기준으로 연산되는 특징이 있습니다.
필요하신 분에게 도움이 되시길 바랍니다. 그러면 이만 :)
도움이 되셨다면 공감 한방, 댓글은 굿잡!
감사합니다~
다음 게시글 : https://itadventure.tistory.com/479