Kodealgo

Operator Logika JavaScript: AND, OR, dan NOT

Operator logika merupakan salah satu jenis operator JavaScript yang sering digunakan saat membuat aplikasi.

Biasanya digunakan dengan conditional statement dan nilai Boolean sebagai operan.

Tapi kita juga bisa menjadikan ekspresi atau nilai truthy dan falsy sebagai operan.

Tidak seperti operator perbandingan yang selalu mengembalikan nilai boolean, operator logika dapat mengembalikan nilai selain boolean.

Mari kita pelajari lebih lanjut...

  1. AND (&&)
    1. Short-circuit Evaluation
  2. OR (||)
    1. Short-circuit Evaluation
    2. Prioritas Operator OR dan AND
  3. NOT (!)

AND (&&)

Operator && hanya akan menghasilkan nilai true jika ekspresi atau operan di kiri dan kanan bernilai true.

Sintaks:

ekspresi1 && ekspresi2

Contoh:

true && true; // true
true && false; // false
false && true; // false
false && false; // false

2 < 3 && 6 < 8; // true && true = true
2 < 3 && 6 > 8; // true && false = false
2 > 3 && 6 < 8; // false && true = false
2 > 3 && 6 > 8; // false && false = false

Sebetulnya JavaScript mengembalikan nilai salah satu operan.

Jadi, jika operator ini digunakan dengan nilai non-boolean, dapat mengembalikan nilai non-boolean.

Rumusnya:

Jika ekspresi disebelah kiri bernilai true, yang dikembalikan adalah nilai di sebelah kanan.

Jika kiri false, maka nilai kiri yang dikembalikan.

Bagaimana jika ekspresi tidak menghasilkan nilai boolean? dipaksa menjadi boolean, ini sudah kita pelajari pada materi truthy dan falsy.

Mari kita lihat contoh ekspresi kiri bernilai false:

'' && 'hello world'; // ''

Ini yang dilakukan JavaScript:

  1. Konversi string kosong '' ke boolean, hasilnya false.
  2. Karena hasilnya false, JavaScript akan langsung mengembalikan '' tanpa mengevaluasi ekspresi di kanan.

Mari kita lihat contoh ekspresi kiri bernilai true.

'hello reza' && 'hello world'; // hello world

Ini yang dilakukan JavaScript:

  1. Konversi string 'hello reza' ke boolean, hasilnya true.
  2. Karena hasilnya true, evaluasi dan kembalikan ekspresi di sebelah kanan.

Short-circuit Evaluation

Expresi pada operator && dievaluasi dari kiri ke kanan sehingga memungkinkan evaluasi short-circuit.

Jika ekspresi di kiri bernilai false, maka ekspresi di kanan tidak akan dievaluasi.

Sedangkan jika ekspresi di kiri bernilai true, maka ekspresi di kanan akan dievaluasi.

Ini aturannya:

  • false && ekspresi, ekspresi tidak dievaluasi.
  • true && ekspresi, ekspresi dievaluasi.

OR (||)

Operator OR (||) hanya akan menghasilkan nilai false jika ekspresi di kiri dan kanan bernilai false.

Sintaks:

ekspresi1 || ekspresi2

Contoh:

true || true; // true
true || false; // true
false || true; // true
false || false; // false

2 < 3 || 6 < 8; // true || true = true
2 < 3 || 6 > 8; // true || false = true
2 > 3 || 6 < 8; // false || true = true
2 > 3 || 6 > 8; // false || false = false

Sama seperti AND, sebetulnya JavaScript mengembalikan nilai salah satu operan.

Jadi, jika operator ini digunakan dengan nilai non-boolean, dapat mengembalikan nilai non-boolean.

Rumusnya:

Jika ekspresi disebelah kiri bernilai false, yang dikembalikan adalah nilai di sebelah kanan.

Jika kiri true, maka nilai kiri yang dikembalikan.

Bagaimana jika operan tidak bernilai atau menghasilkan nilai boolean? dipaksa menjadi boolean.

Mari kita lihat contoh ekspresi kiri bernilai false:

'' || 'hello world'; // hello world

Ini yang dilakukan JavaScript:

  1. Konversi string kosong '' ke boolean, hasilnya false.
  2. Karena hasilnya false, evaluasi dan kembalikan ekspresi di sebelah kanan.

Mari kita lihat contoh ekspresi kiri bernilai true:

'hello reza' && 'hello world'; // hello world

Ini yang dilakukan JavaScript:

  1. Konversi string 'hello reza' ke boolean, hasilnya true.
  2. Karena kiri bernilai true, evaluasi dan kembalikan ekspresi di sebelah kanan.

Short-circuit Evaluation

Sama seperti AND, expresi pada operator || dievaluasi dari kiri ke kanan sehingga memungkinkan evaluasi short-circuit.

Jika ekspresi di kiri bernilai false, maka evaluasi ekspresi di kanan.

Jika ekspresi di kiri bernilai true, maka ekspresi di kanan tidak akan dievaluasi.

Ini aturannya:

  • false || ekspresi, ekspresi dievaluasi.
  • true || ekspresi, ekspresi tidak dievaluasi.

Prioritas Operator OR (||) dan AND (&&)

Dalam kondisi tertentu terkadang kita perlu menulis atau menggabungkan operator AND dengan OR dalam satu statement.

Jika ini dilakukan operator && akan dieksekusi terlebih dahulu sebelum ||.

Tapi kita bisa membungkus ekspresi menggunkaan kurung lengkung (( ... )) agar dieksekusi terlebih dahulu.

Contoh:

true || (false && false); // true
(true || false) && false; // false

NOT (!)

Operator NOT ! atau negasi mengubah nilai truthy menjadi falsy atau sebaliknya.

Sintaks:

!ekspresi

Contoh:

!true; // false
!false; // true
!''; // true
!1; // false
!(true && true); // false

Kita juga bisa menggunakan beberapa operator NOT secara bersamaan.

Untuk mengkonversi nilai apa pun ke boolean sesuai truthy dan falsy, gunakan dua buah operator NOT.

Contoh:

!!true; // true
!!{}; // true
!![]; // true
!!''; // false