Operator & Logical Thinking
Jika variabel adalah "kotak penyimpanan", maka Operator adalah "mesin pemroses" di dalam gudang data kita. Di bagian ini, kita akan belajar bagaimana memanipulasi nilai, membandingkannya, dan membangun logika yang membuat program kita bisa "berpikir".
Operator Aritmatika
Kita sudah melihat sedikit penggunaannya di section sebelumnya. Operator aritmatika digunakan untuk melakukan perhitungan matematika standar.
1let a = 10;
2let b = 3;
3
4console.log(a + b); // Penjumlahan: 13
5console.log(a - b); // Pengurangan: 7
6console.log(a * b); // Perkalian: 30
7console.log(a / b); // Pembagian: 3.333...
8console.log(a % b); // Modulo (Sisa Bagi): 1
9console.log(a ** b); // Perpangkatan: 1000Alur Eksekusi:
Pada operator % (Modulo), JavaScript membagi 10 dengan 3. Hasilnya adalah 3 dengan sisa 1. Angka 1 inilah yang dikembalikan. Modulo sangat berguna untuk mengecek apakah sebuah bilangan itu genap (hasil % 2 adalah 0) atau ganjil.
Operator Perbandingan (Comparison)
Operator ini membandingkan dua nilai dan selalu menghasilkan Boolean (true atau false). Ini adalah kunci dari semua logika pemrograman.
1let skor = 80;
2
3console.log(skor > 70); // true (lebih besar dari)
4console.log(skor < 70); // false (lebih kecil dari)
5console.log(skor >= 80); // true (lebih besar atau sama dengan)
6console.log(skor === 80); // true (sama dengan secara identik)
7console.log(skor !== 90); // true (tidak sama dengan)**Penting: == vs ===**
Dalam JavaScript, ada perbedaan antara "sama dengan" biasa (==) dan "sama dengan ketat" (===).
==hanya mengecek nilai (melakukan type coercion).===mengecek nilai DAN tipe datanya.
1console.log(5 == "5"); // true (nilainya dianggap sama)
2console.log(5 === "5"); // false (karena Number tidak sama dengan String)Kesalahan Umum: Pemula sering menggunakan = (assignment) saat ingin membandingkan. Ingat: = untuk mengisi nilai, === untuk membandingkan nilai.
Operator Logika (Logical Operators)
Bagaimana jika kita punya lebih dari satu syarat? Misalnya: "Anda boleh masuk jika sudah punya tiket DAN memakai sepatu". Di sinilah kita menggunakan operator logika:
- AND (
&&): Menghasilkantruejika semua kondisi benar. - OR (
||): Menghasilkantruejika salah satu kondisi benar. - NOT (
!): Membalikkan nilai (true jadi false, false jadi true).
1let punyaTiket = true;
2let pakaiSepatu = false;
3
4// Logika AND
5console.log(punyaTiket && pakaiSepatu); // false (karena salah satu salah)
6
7// Logika OR
8console.log(punyaTiket || pakaiSepatu); // true (karena satu saja cukup)
9
10// Logika NOT
11console.log(!punyaTiket); // false (kebalikan dari true)Operator Precedence (Urutan Kekuatan)
Sama seperti matematika di sekolah, JavaScript punya urutan mana yang dikerjakan duluan. Perkalian (*) lebih kuat dari penjumlahan (+). Namun, tanda kurung () adalah yang terkuat dari semuanya.
1let hasil = 10 + 2 * 5;
2console.log(hasil); // 20 (Perkalian dulu: 2*5 = 10, lalu 10+10)
3
4let hasilKuat = (10 + 2) * 5;
5console.log(hasilKuat); // 60 (Kurung dulu: 10+2 = 12, lalu 12*5)Operator typeof
Kadang kita bingung sebuah variabel berisi apa (terutama saat datanya datang dari luar). Kita bisa menggunakan typeof.
1let data = "100";
2console.log(typeof data); // "string"
3
4let angka = Number(data); // Mengubah string jadi number secara manual
5console.log(typeof angka); // "number"Studi Kasus Sederhana: Bayangkan sebuah sistem diskon toko. Pelanggan dapat diskon jika belanja di atas 100.000 DAN merupakan member.
1let totalBelanja = 120000;
2let isMember = true;
3
4let dapatDiskon = totalBelanja > 100000 && isMember;
5console.log("Apakah dapat diskon? " + dapatDiskon);Prediksi Output:
Jika totalBelanja kita ubah menjadi 90000, apa hasil dari dapatDiskon? Meskipun isMember bernilai true, hasil akhirnya akan false karena operator && mewajibkan kedua sisi bernilai benar.