Node.js dla początkujących - Część 2: Operatory i wyrażenia
Mateusz Kędziora

Operatory i Wyrażenia w JavaScript – Kurs dla Początkujących
W poprzedniej części kursu, omawiając zmienne, wspomnieliśmy o podstawowych operatorach. Dziś przyjrzymy się im znacznie dokładniej i poznamy ich pełen zakres. Operatory to symbole, które wykonują operacje na wartościach (zwanych operandami). Połączenie operatorów i operandów tworzy wyrażenia.
Operatory Arytmetyczne
Służą do wykonywania podstawowych działań matematycznych:
+
(dodawanie):5 + 3
daje8
-
(odejmowanie):10 - 4
daje6
*
(mnożenie):6 * 7
daje42
/
(dzielenie):15 / 3
daje5
%
(modulo – reszta z dzielenia):10 % 3
daje1
(bo 10 = 3 * 3 + 1)**
(potęgowanie):2 ** 3
daje8
(2 do potęgi 3)
Przykłady:
let x = 10;
let y = 3;
console.log(x + y); // 13
console.log(x - y); // 7
console.log(x * y); // 30
console.log(x / y); // 3.333...
console.log(x % y); // 1
console.log(x ** y); // 1000
Operatory Porównania
Porównują dwie wartości i zwracają wartość logiczną (true
– prawda lub false
– fałsz):
==
(równy):5 == 5
dajetrue
,5 == "5"
dajetrue
(sprawdza tylko wartość, nie typ)===
(ściśle równy):5 === 5
dajetrue
,5 === "5"
dajefalse
(sprawdza wartość i typ)!=
(różny):5 != 6
dajetrue
!==
(ściśle różny):5 !== "5"
dajetrue
>
(większy niż):8 > 3
dajetrue
<
(mniejszy niż):2 < 7
dajetrue
>=
(większy lub równy):4 >= 4
dajetrue
<=
(mniejszy lub równy):1 <= 5
dajetrue
Przykłady:
let a = 10;
let b = "10";
console.log(a == b); // true
console.log(a === b); // false
console.log(a != b); // false
console.log(a !== b); // true
Operatory Logiczne
Służą do łączenia wyrażeń logicznych:
&&
(AND – i):(5 > 3) && (2 < 4)
dajetrue
(oba warunki muszą być prawdziwe)||
(OR – lub):(5 < 3) || (2 < 4)
dajetrue
(przynajmniej jeden warunek musi być prawdziwy)!
(NOT – negacja):!(5 == 5)
dajefalse
(odwraca wartość logiczną)
Przykłady:
let prawda = true;
let falsz = false;
console.log(prawda && falsz); // false
console.log(prawda || falsz); // true
console.log(!prawda); // false
Operatory Przypisania
Służą do przypisywania wartości zmiennym:
=
(przypisanie):x = 5
przypisuje wartość 5 do zmiennej x+=
(dodawanie i przypisanie):x += 3
to to samo cox = x + 3
-=
(odejmowanie i przypisanie):x -= 2
to to samo cox = x - 2
*=
(mnożenie i przypisanie):x *= 4
to to samo cox = x * 4
/=
(dzielenie i przypisanie):x /= 2
to to samo cox = x / 2
%=
(modulo i przypisanie):x %= 3
to to samo cox = x % 3
Przykłady:
let liczba = 10;
liczba += 5; // liczba teraz ma wartość 15
console.log(liczba); // 15
Operatory Bitowe
Operatory bitowe operują na bitach liczb całkowitych. W JavaScript liczby są reprezentowane jako 32-bitowe liczby ze znakiem. Operatory te rzadziej są używane w codziennym programowaniu webowym, ale są przydatne w optymalizacji, operacjach niskopoziomowych (np. praca z grafiką, protokołami sieciowymi) i algorytmach.
&
(AND bitowe): Zwraca 1 tylko wtedy, gdy oba odpowiadające sobie bity operandów są równe 1.|
(OR bitowe): Zwraca 1, gdy co najmniej jeden z odpowiadających sobie bitów operandów jest równy 1.^
(XOR bitowe – exclusive OR): Zwraca 1, gdy odpowiadające sobie bity operandów są różne.~
(NOT bitowe – negacja): Odwraca wszystkie bity operandu (0 staje się 1, a 1 staje się 0).<<
(przesunięcie bitowe w lewo): Przesuwa bity operandu w lewo o określoną liczbę pozycji. Wprowadza zera od prawej strony. Odpowiada mnożeniu przez potęgę 2.>>
(przesunięcie bitowe w prawo): Przesuwa bity operandu w prawo o określoną liczbę pozycji. Zachowuje bit znaku (jeśli liczba była ujemna, z lewej strony wstawiane są jedynki). Odpowiada dzieleniu całkowitemu przez potęgę 2.>>>
(bez znakowe przesunięcie bitowe w prawo): Przesuwa bity operandu w prawo o określoną liczbę pozycji. Zawsze wstawia zera z lewej strony, niezależnie od znaku liczby.
Przykłady Operatorów Bitowych:
Aby lepiej zrozumieć działanie operatorów bitowych, spójrzmy na przykłady z reprezentacją binarną liczb:
let a = 5; // Binarnie: 0101
let b = 3; // Binarnie: 0011
// AND bitowe (&)
console.log(a & b); // 1 (Binarnie: 0001)
// 0101
// 0011
// ----
// 0001
// OR bitowe (|)
console.log(a | b); // 7 (Binarnie: 0111)
// 0101
// 0011
// ----
// 0111
// XOR bitowe (^)
console.log(a ^ b); // 6 (Binarnie: 0110)
// 0101
// 0011
// ----
// 0110
// NOT bitowe (~)
console.log(~a); // -6 (Binarnie: 11111111111111111111111111111010 - reprezentacja uzupełnienia do dwóch)
// ~0101 => 1010 (w reprezentacji 32-bitowej ze znakiem i uzupełnieniu do dwóch daje -6)
// Przesunięcie bitowe w lewo (<<)
console.log(a << 1); // 10 (Binarnie: 1010) - mnożenie przez 2
console.log(a << 2); // 20 (Binarnie: 10100) - mnożenie przez 4
// Przesunięcie bitowe w prawo (>>)
console.log(a >> 1); // 2 (Binarnie: 0010) - dzielenie przez 2 (część ułamkowa odrzucana)
// Bez znakowe przesunięcie bitowe w prawo (>>>)
let c = -5; // Binarnie (uproszczone): 1111...1011
console.log(c >>> 1); // 2147483645 (Przesunięcie bitów i wstawienie 0 z lewej strony)
// Zwraca dużą liczbę dodatnią, ponieważ bity znaku są przesuwane i zastępowane zerami.
Krótkie Podsumowanie Operatorów Bitowych:
&
(AND): Sprawdza, czy oba bity są 1.|
(OR): Sprawdza, czy co najmniej jeden bit jest 1.^
(XOR): Sprawdza, czy bity są różne.~
(NOT): Odwraca bity.<<
: Przesuwa bity w lewo (mnożenie przez 2n).>>
: Przesuwa bity w prawo (dzielenie przez 2n, zachowuje znak).>>>
: Przesuwa bity w prawo (dzielenie przez 2n, wstawia 0 z lewej).
Operatory bitowe mogą być trudne do zrozumienia na początku, ale z praktyką staną się bardziej intuicyjne.
Operatory Inkrementacji/Dekrementacji
Służą do zwiększania lub zmniejszania wartości zmiennej o 1:
++
(inkrementacja):x++
(postinkrementacja – zwraca starą wartość, a potem inkrementuje),++x
(preinkrementacja – najpierw inkrementuje, a potem zwraca nową wartość)--
(dekrementacja):x--
(postdekrementacja),--x
(predekrementacja)
Przykłady:
let i = 5;
console.log(i++); // wyświetli 5, a potem i będzie równe 6
console.log(++i); // wyświetli 7 (bo najpierw i zostało zwiększone)
let j = 10;
console.log(j--); // wyświetli 10, a potem j będzie równe 9
console.log(--j); // wyświetli 8
Wyrażenia i Ich Ewaluacja
Wyrażenie to kombinacja operandów i operatorów, która daje w wyniku jakąś wartość. Ewaluacja wyrażenia to proces obliczania tej wartości. Kolejność ewaluacji jest zgodna z priorytetem operatorów (np. mnożenie i dzielenie mają wyższy priorytet niż dodawanie i odejmowanie). Możemy używać nawiasów, aby wymusić inną kolejność:
let wynik = 2 + 3 * 4; // wynik to 14 (najpierw 3 * 4, potem dodawanie)
let wynik2 = (2 + 3) * 4; // wynik2 to 20 (najpierw (2 + 3), potem mnożenie)
Mam nadzieję, że ten artykuł był pomocny. Zachęcam do zostawiania komentarzy. W kolejnych częściach kursu będziemy omawiać instrukcje warunkowe i pętle.
Polecane artykuły
Docker vs Kubernetes: Który dla Ciebie w 2025?
Docker i Kubernetes objaśnione! Która technologia lepsza dla początkujących w 2025? Porównanie, przykłady i przyszłość.
Mateusz Kędziora
DevOps: Automatyzacja zadań sysadmina dla programistów
Zautomatyzuj pracę sysadmina w środowisku DevOps! Praktyczne przykłady, skrypty, Ansible, Terraform, Prometheus i Grafana.
Mateusz Kędziora
Automatyzacja Linux/macOS z Bash: Praktyczny Przewodnik
Zacznij automatyzować system Linux/macOS z Bash! Dowiedz się, czym jest Bash, jak pisać skrypty i używać podstawowych komend.
Mateusz Kędziora