유데미 - OPERATPR PRECEDENCE(연산자 우선순위)

MK·2022년 5월 4일

Udemy 강의!

목록 보기
3/12
const now = 2037;
const ageJonas = now - 1991;
const ageSarah = now - 2018;

console.log(now - 1991 > now - 2018);

이 예제에서 문득 궁금한게 생겼습니다.

우리야 now(2037)에서 1991을 무선 빼고(46), now(2037)에서 2018을 뺀(19) 을 먼저 한 후
비교를 하겠지만
컴퓨터는 무조건 왼쪽에서 오른쪽으로 가면서 비교를 하게 되어있는데 어떻게 결과는 true가 나올까요?

자바스크립트는 똑똑한 언어라서 이런걸 따로 범위를 지정해주지 않아도 좌항과 우항을 비교해야 하는구나 하고 알아챕니다.

JavaScript 안에서도 무엇을 연산해야하는지 우선순위가 있어보이는데요.

MDN에 자세한 설명이 있으니 알아보겠습니다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Operator_Precedence (링크에서 자세하게 볼 수 있습니다!)


숫자가 높을 수록 더 우선적으로 JavaScript가 처리하는거라고 하네요. (숫자를 외울 필요는 없습니다!)

여기서 좌결합성, 우결합성이 있는데요.

우결합성의 대표적인 예시인 15번을 보겠습니다.

let x, y;
x = y = 25 - 10 - 5;
//x = y = 10, x = 10

console.log(x, y);

변수 x 와 y를 만들고
x = y = 25 - 10 - 5 라는 식의 결과를 볼게요.

25 - 10 - 5 는 10이라는 건 다 아는 사실입니다.
하지만 컴퓨터가 읽는 모든게 좌결합성이라면
x = y 가 되고 지금 y는 undefined, 그러니까 비어있는 변수가 됩니다.
그리고 y는 10이 되겠죠.
하지만 결과는
x, y 둘다 10이 됩니다.

바로 우결합성 때문이죠.


또 예전 수학시간에 배우던 괄호도 사용해주는게 좋은데요.

const averageAge = ageJonas + ageSarah / 2;

console.log(ageJonas, ageSarah, averageAge);

이건 결과가 어떻게 나올까요?

산수 상식처럼 곱셈과 나누기가 먼저 돼서 두 값보다 더 높은 값이 출력 되었습니다.

괄호를 씌워주면

const averageAge = (ageJonas + ageSarah) / 2;

이것처럼 원하는 값이 나오게 됩니다!

시마이!

profile
그라타타타

0개의 댓글