연산자
이번에는 연산자에 대해서 알아볼겁니다.
연산자는 프로그래밍 언어에서 특정 연산을 하도록 하는 문자입니다.
예를 들면, 우리가 변수와 상수를 배울 때 다음과 같은 코드를 작성 했었습니다.
let value = 1; //변수선언
value = 2; //대입 연산자
여기서 사용 된 = 문자가 바로 연산자 입니다.
연산자의 종류는 굉장히 많습니다. 그 중에서 = 는 대입연산자에 해당합니다.
첫 번째 줄에 사용된 = 는 새로운 변수를 선언하는 것으로서, 대입연산자에 해당하지 않습니다.
두 번째 줄에서 사용된 =가 대입연산자 입니다.
산술연산자
산술 연산자는 사칙연산과 같은 작업을 하는 연산자를 의미한다.
- + : 덧셈
- - : 뺄샘
- * : 곱셈
- / : 나눗셈
위 4가지가 가장 기본적인 산술 연산자입니다. 이 외에도 몇가지가 더 있다.
let a = 1 + 2;
console.log(a);
위 코드의 a값을 선언 할 때에 1+2의 결과물을 담습니다. 따라서 콘솔에는 3이라는 숫자가 나타날겁니다.
사칙연산에서는 우선순위가 존재한다.
1. 거듭제곱이 있을 경우 거듭제곱 먼저
2. 괄호가 있을 경우 괄호 안 계산 먼저 - 괄호의 계산 순서는 (소),{중},[대] 순!
3. 곱셈, 나눗셈 먼저 계산
4. 덧셈, 뺄셈은 가장 마지막에 계산
컴퓨터언어에서 연산자 중에는 증감연산자라고 것이 또한 존재한다.
let a = 1;
a++;
++a;
console.log(a);
console.log(a++); 를 할 때에는 1을 더하기 직전 값을 보여준다.
console.log(++a); 를 할 때에는 1을 더한 다음의 값을 보여준다는 차이가 있다.
이것은 덧셈 외에도 뺄셈도 똑같이 할 수 있다.
let a = 1;
a--;
console.log(a);
결과는 0이 나타나게 된다.
대입연산자
대입 연산자는 특정 값에 연산을 한 값을 바로 설정 할 때 사용할 수 있는 연산자입니다.
let a = 1;
a = a + 3;
다음과 같은 코드가 있다면 a 는 숫자 1 이기 때문에, 1+3 이라는 결과가 나온다.
let a = 1;
a += 3;
이렇게 덧셈을 활용한 대입연산자도 사용이 가능합니다. 이 외에도 다른 연산도 가능합니다.
논리 연산자
논리 연산자는, 불리언 타입(true 혹은 false)를 위한 연산자입니다. 논리 연산자는 다음 장에서 우리가
if 문을 배울 때 매우 유용합니다. 총 3가지가 있습니다.
- ! : NOT
- && : AND
- || : OR
OR 의 경우에는 보통에 경우에 키보드 엔터키 위, 백슬래쉬라고 불리는 \ 를 Shift키를
같이 누른 상태로 써주면 | 이렇게 나타납니다.
NOT
NOT 연산자 true 는 flase로, false는 true로 바꿔줍니다.
const a = !true;
console.log(a);
a의 값은 true가 아니다고 반영하기 때문에, 결과 값은 false가 나오게 됩니다.
const b = !false;
console.log(b);
b의 값 또한, !=false는 flase가 아니다고 반영을 하기 때문에, 결과 값은 frue가 나오게 됩니다.
NOT : ! 저는 NOT 연산자를 이중부정을 통한 반대 도출 값이라고 이해했습니다.
AND
AND 연산자는 양쪽의 값이 둘 다 ture 일때만 결과물이 true 가 나오게 됩니다.
const a = true && true;
console.log(a);
위의 예제는 양쪽이 모두 true의 값이기 때문에, 값이 ture가 나오게 됩니다.
let f = false && false;
f = false && true;
f = true && false;
console.log(f);
다음과 같은 경우에는 첫 번째는 양쪽의 값이 둘 다 flase이기 때문에, 결과 또한 false가 나오게 됩니다.
두 번째와 세 번째 경우도 양쪽의 값이 일치하지 않고 flase와 true가 양쪽에 번갈아가며 있기에
flase이 나오게 됩니다.
OR
OR 연산자는 양쪽의 값 중 하나라도 true 라면 결과물이 true 입니다.
그리고, 둘다 flase 일경우에만 flase 나오게 됩니다.
let t = true || false;
t = false || true;
t = true || true;
console.log (t);
위의 예제의 결과는 모두 true가 나오게 되는데, OR 연산자는 ture가 하나라도 포함되어 있으면,
결과가 모두 true가 나오기 때문에, 결과가 모두 ture가 나오게 된 것입니다.
let f = false = fasle;
console.log (f);
반대로 위에 처럼, true가 포함되어 있지 않은 예제는, 결과 값이 flase가 나오게 됩니다.
연산순서
사칙연산을 할 때에도, 곱셈과 나눗셈이 먼저였고, 그 다음에 덧셈 뺄셈이였던 것처럼, 논리 연산자도 순서가 있습니다.
순서는 NOT -> AND -> OR 순 입니다.
const value = !((true && false) || (true && false) || !true);
console.log (value);
위와 같은 예시가 있다면, NOT 연산자를 먼저 처리 해야되기 때문에, 1순위 연산 순서는
!((true && false) || (true && false) || !true);
NOT 연산자는 !의 값을 먼저 처리해야 됩니다. 하지만 위에서는 괄호안의 계산을 먼저 마친 후
바깥에 있는 !로 마무리가 되기 때문에, ( )의 값을 먼저 계산을 해줍니다.
1. !ture의 값이 false로 결과가 바뀌게 됩니다.
2. 다음으로 AND 연산자 &&를 계산해주면, 양쪽의 값이 둘다 ture 일 경우에 결과 값이 true로
나오게 되기 때문에, !(false || false || false); 이러한 결과값이 나오게 됩니다.
3. 마지막으로 비교 연산자 OR ||로 계산을 마무리 하는데, 양쪽의 값 중에 하나라도 ture 일 경우에
결과 값이 true로 바꾸기 때문에, 여기서는 모두 false만 있고, true가 없기에 결과는 flase로 나옵니다.
!false
그렇다면 괄호밖에 있던 NOT 연산자 !가 남아있었기 때문에, 다시 반대로 값을 변경 시켜주어서
최종 결과는 ture의 값이 출력이 되게 됩니다.
비교 연산자
비교 연산자는 두 값을 비교 할 때 사용할 수 있습니다.
두 값이 일치하는지 확인
const a = 1;
const b = 1;
const equals = a === b;
console.log (equals);
== 는 두 값이 일치하는지 확인해줍니다. 일치한다면, true가 일치하지 않는다면 false이 나타납니다.
위 코드의 경우엔 true가 a와 b의 값이 같기 때문에 true가 나오게 됩니다.
두 값이 일치 하는지 확인 하는 경우네는 = 문자를 3번 사용 하지만 2개로도 비교할 수 있습니다.
const a = 1;
const b = 1;
const equals = a == b;
console.log(equals);
위 코드도 똑같이 결과 true를 반환하긴 하지만, ===이 3개 있을 때와 차이점이 있다면,
==이 2개 일 때에는 타입검사까지 하지 않는다는 차이가 있습니다.
예를들자면, == 는 숫자 1과 문자 '1'도 동일한 값으로 간주되게 됩니다.
const a = 1;
const b = '1';
const equals = a == b;
console.log(equals);
실제로 문자와 숫자는 다르지만, ==는 타입검사를 해주지 않기 때문에 true라는 결과가 나오게 됩니다.
그리고, 0과 false도 같은 값으로 간주됩니다.
const a = 1;
const b = '1';
const equals = a == b;
console.log(equals);
그렇기 때문에 두 값이 일치하는지 비교 할 때에는 == 보다는 ===를 사용하는 것을 권장합니다.
==를 사용하다보면 실수할 확률이 그만큼 높아지게 되고, ===를 사용할 경우에는 타입검사를 해주기 때문입니다.
두 값이 일치하지 않는지 확인
두 값이 일치하지 않는지 확인 할 때에는 !==를 사용하면 됩니다.
const value = 'a' !== 'b';
console.log(value);
일치하지 않는 것이 맞기 때문에, 결과는 true로 출력 됩니다.
위의 == or ===와 마찬가지로 여기에서도, !=를 사용할 경우에는 타입검사를 하지 않습니다.
console.log(1 != '1');
console.log(1 !== '1');
두개를 비교하면, 위에는 false의 결과 값이 나오고, 아래는 true가 나오게 됩니다.
위에는 똑같이 숫자 1이라고 인식을 했기 때문에, 두 값이 일치한다고 보고, false 결과가 나오게 되었고
밑에는 1의 숫자와 문자 숫자 '1'로 다르게 인식 했기에, 두 값이 false임을 확인하고, 다른게 맞다는 true
의 결과값을 가져오게 되었습니다.
그렇기 때문에 !==를 사용하는 것을 마찬가지로 권장드립니다.
크고 작음
두 값 중에서 무엇이 더 크고 작은지 비교하기 위해서는 다음 연산자를 사용할 수 있습니다.
const a = 10;
const b = 15;
const c = 15;
console.log(a < b); //true
console.log(b > a); //true
console.log(b >= c); //true
console.log(a <= c); //true
console.log(b < c); //false;
뒤에 붙어 있는 // 는 프로그래밍언어를 작성하면서 주석이라도 부르는 부분입니다.
// 뒤에 나오는 문자나 숫자등은 프로그래밍언어로 인식하지 않기 때문에, 메모용도로 작성합니다.