Panitia kursus perlu memutuskan siapa yang lulus, toko perlu memutuskan apakah stok sudah menyentuh ambang minimum, dan aplikasi perlu memutuskan apakah saldo pengguna masih cukup. Semua keputusan itu berangkat dari operasi yang sama: membandingkan dua nilai. Chapter ini membahas empat operator perbandingan >, <, >=, dan <= yang menjadi bahan dasar keputusan program.
Satu hal yang perlu kita pegang sejak awal: hasil perbandingan selalu berupa boolean true atau false — tipe yang sudah kita pelajari di section Values dan Types. Nilai boolean inilah yang nantinya dikonsumsi operator logika pada chapter berikutnya dan statement kondisi pada section Control Flow.
Empat Operator Perbandingan #
Setiap operator membaca dua nilai: satu di kiri, satu di kanan. Engine membandingkan keduanya, lalu menghasilkan boolean sesuai hubungan keduanya:
| Operator | Arti | Contoh | Hasil |
|---|---|---|---|
> | Lebih besar dari | 95 > 90 | true |
< | Lebih kecil dari | 68 < 75 | true |
>= | Lebih besar atau sama dengan | 75 >= 75 | true |
<= | Lebih kecil atau sama dengan | 74 <= 75 | true |
Perhatikan bahwa >= dan <= masing-masing adalah satu operator, bukan dua operator berurutan. Menulis > = dengan spasi akan menghasilkan error sintaks. Bentuk >= menjawab pertanyaan “apakah nilai kiri mencapai batas kanan atau bahkan melampauinya”, sehingga nilai tepat di batas (misalnya 75 >= 75) tetap menghasilkan true.
Karena hasilnya selalu boolean, hasil perbandingan bisa disimpan seperti nilai lain dan diperiksa tipenya:
const nilaiBudi = 78;
const batasLulus = 75;
const lulusBudi = nilaiBudi >= batasLulus;
console.log(typeof lulusBudi);
console.log(lulusBudi);Output yang Dihasilkan:
boolean
truetypeof — alat pemeriksa tipe dari section Values dan Types — mengkonfirmasi hasil perbandingan adalah boolean, bukan angka maupun teks. Simpan perbandingan ke variabel ketika keputusannya akan dipakai beberapa kali; nama seperti lulusBudi membuat baris berikutnya terbaca seperti kalimat.
Contoh: Menilai Kelulusan Ujian #
Berkas berikut membandingkan nilai ujian Budi dan Siti terhadap batas kelulusan. Kita jalankan dengan node dan amati pola keluarannya:
// penilaian-ujian.js
// Membandingkan nilai ujian dengan operator perbandingan.
const nilaiBudi = 78;
const nilaiSiti = 92;
const batasLulus = 75;
// >= : syarat lulus dicapai atau tidak.
console.log("Budi lulus:", nilaiBudi >= batasLulus);
console.log("Siti lulus:", nilaiSiti >= batasLulus);
// > dan < : membandingkan dua nilai ujian.
console.log("Siti di atas 90:", nilaiSiti > 90);
console.log("Budi di bawah Siti:", nilaiBudi < nilaiSiti);
// <= : Budi masih di bawah atau tepat di batas lulus?
console.log("Budi di bawah batas:", nilaiBudi <= batasLulus);
// Hasil perbandingan layak disimpan seperti nilai lain.
const jarakKeBatas = batasLulus - nilaiBudi;
console.log("Selisih Budi ke batas:", jarakKeBatas);Output yang Dihasilkan:
Budi lulus: true
Siti lulus: true
Siti di atas 90: true
Budi di bawah Siti: true
Budi di bawah batas: false
Selisih Budi ke batas: -3Mari kita telaah baris-baris pentingnya:
- Baris 4–6 (
const nilaiBudi = 78;dst.): tiga data disiapkan — dua nilai ujian dan satu batas kelulusan. Menyimpan batas ke variabel bernamabatasLulusmembuat maksud75terbaca jelas di semua baris berikutnya. - Baris 9 (
console.log("Budi lulus:", nilaiBudi >= batasLulus);): engine membandingkan78 >= 75dan menghasilkantrue. Nilai75termasuk lulus karena>=menghitung “sama dengan” sebagai lulus. - Baris 10 (
console.log("Siti lulus:", nilaiSiti >= batasLulus);):92 >= 75juga menghasilkantrue; ekspresi yang sama bisa dipakai ulang untuk data berbeda. - Baris 13–14 (
nilaiSiti > 90dannilaiBudi < nilaiSiti): kedua perbandingan menghasilkantrue. Di sini dua nilai variabel dibandingkan satu sama lain — kedua sisi tidak harus berupa angka tulisan. - Baris 17 (
console.log("Budi di bawah batas:", nilaiBudi <= batasLulus);):78 <= 75menghasilkanfalse. Inilah satu-satunya keluaranfalsedi berkas ini, dan itu sesuai fakta: Budi lulus, jadi nilai Budi tidak mungkin di bawah batas. - Baris 20–21 (
const jarakKeBatas = batasLulus - nilaiBudi;): hasil perhitungan aritmatika (chapter sebelumnya) disimpan lalu dicetak. Nilai-3muncul karena urutan pengurangannya terbalik; saat menyusun laporan, penulisannilaiBudi - batasLulusakan lebih enak dibaca.
Membandingkan String #
Empat operator di atas juga berlaku untuk string, tetapi aturannya berbeda: engine membandingkan urutan karakter berdasarkan nomor Unicode, bukan panjang teks ataupun keberadaan angka di dalamnya:
console.log("b" > "a");
console.log("Z" < "a");
console.log("10" < "9");Output yang Dihasilkan:
true
true
trueTiga hasil di atas semuanya true, dan baris ketiganya paling sering mengejutkan. String "10" dikatakan lebih kecil dari "9" karena perbandingan dilakukan karakter demi karakter: 1 memiliki nomor Unicode lebih kecil daripada 9, sehingga kesimpulan diambil di karakter pertama tanpa melihat sisanya. Huruf besar juga “lebih kecil” daripada huruf kecil ("Z" < "a"), karena tabel Unicode menempatkan A–Z sebelum a–z.
Membandingkan Hasil Perhitungan #
Kedua sisi perbandingan tidak harus angka tulisan maupun variabel sederhana; hasil perhitungan aritmatika pun bisa langsung dibandingkan. Skenario berikut menguji apakah saldo Siti cukup untuk membayar tagihan:
const saldo = 50000;
const totalBayar = 62000;
console.log(totalBayar <= saldo);
const sisa = saldo - totalBayar;
console.log(sisa >= 0);Output yang Dihasilkan:
false
falseKedua perbandingan menghasilkan false: tagihan 62000 tidak lebih kecil dari atau sama dengan saldo 50000, dan selisihnya (-12000) memang bukan nilai yang lebih besar atau sama dengan nol. Catatan penting dari contoh ini: perbandingan hanya membaca kedua operand, tidak pernah mengubahnya — saldo tetap 50000 setelah dibandingkan. Operator perbandingan menghasilkan nilai baru (boolean); pengubahan nilai tetap tugas operator assignment.
Menuju Penggabungan Kondisi #
Kebutuhan nyata sering berbentuk rentang: “nilai antara 70 dan 85”. Keinginan menulis 70 <= nilai < 85 seperti di matematika tidak berlaku di JavaScript; ekspresi semacam itu harus dipecah menjadi dua perbandingan terpisah. Untuk nilai 78, kedua sisi rentang diperiksa satu per satu:
const nilai = 78;
console.log(nilai >= 70);
console.log(nilai < 85);Output yang Dihasilkan:
true
trueKedua perbandingan menghasilkan true, sehingga 78 memang berada di rentang 70 hingga 84. Persoalannya, program perlu melihat kedua jawaban itu sekaligus untuk menyimpulkan “ada di rentang”. Kata penghubung “dan” serta “atau” untuk menggabungkan dua boolean itulah bahan chapter berikutnya, Logical Operators.
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
penilaian-ujian.js
Unduh berkas// penilaian-ujian.js
// Membandingkan nilai ujian dengan operator perbandingan.
const nilaiBudi = 78;
const nilaiSiti = 92;
const batasLulus = 75;
// >= : syarat lulus dicapai atau tidak.
console.log("Budi lulus:", nilaiBudi >= batasLulus);
console.log("Siti lulus:", nilaiSiti >= batasLulus);
// > dan < : membandingkan dua nilai ujian.
console.log("Siti di atas 90:", nilaiSiti > 90);
console.log("Budi di bawah Siti:", nilaiBudi < nilaiSiti);
// <= : Budi masih di bawah atau tepat di batas lulus?
console.log("Budi di bawah batas:", nilaiBudi <= batasLulus);
// Hasil perbandingan layak disimpan seperti nilai lain.
const jarakKeBatas = batasLulus - nilaiBudi;
console.log("Selisih Budi ke batas:", jarakKeBatas);