Operasi logika hanya memproses nilai boolean (true /false), berfungsi untuk memeriksa apakah suatu syarat terpenuhi. Hanya ada dua hasil akhir: true (benar, syarat terpenuhi), false (salah, syarat tidak terpenuhi).
Semua perintah if, pengecekan perulangan while/for, dan syarat switch di kode semuanya diimplementasikan dengan operasi logika di balik layar.
Terdapat tiga jenis utama: AND, OR, NOT
| Operator | Nama | Keterangan Fungsi |
|---|---|---|
&& | Logika AND | Hasil baru true jika kedua sisi bernilai true; mendukung evaluasi pintas |
| || | Logika OR | Hasil langsung true jika salah satu sisi bernilai true; mendukung evaluasi pintas |
!expr | Logika NOT (pembalik nilai) | Membalik nilai boolean: true jadi false, false jadi true |
Konsep AND, OR, NOT mirip dengan rangkaian seri dan paralel yang dipelajari di sekolah menengah. Rangkaian seri sama dengan AND, rangkaian paralel sama dengan OR.
1. Logika NOT !
Membalik nilai dari satu ekspresi boolean tunggal.
Sintaks:
!ekspresi_boolean
Contoh
void main() {
bool isMale = false;
print(!isMale); // true
bool flag = true;
print(!flag); // false
}Code language: PHP (php)
Nilai awal isMale adalah false dan flag adalah true, setelah diproses operator NOT akan berubah menjadi nilai kebalikannya.
Bisa juga diterapkan ke ekspresi utuh, contohnya
void main() {
int age = 12;
print(!(age>18)); // true
}Code language: JavaScript (javascript)
Hasil awal age > 18 adalah false, namun setelah diberi tanda ! di depan, nilainya terbalik dan keluar true.
2. Logika AND &&
| Ekspresi | Hasil |
|---|---|
true && true | true |
true && false | false |
false && true | false |
false && false | false |
Hasil hanya true jika kedua sisi bernilai true; jika salah satu sisi false, hasil pasti false.
Karakteristik evaluasi pintas: jika sisi kiri bernilai false, kode di sisi kanan tidak akan dijalankan dan langsung mengembalikan false.

Lampu baru menyala (true) jika dua saklar sama-sama tertutup (true). Jika ada satu saklar terbuka (false), lampu tidak menyala (false). Apabila sisi kiri sudah diketahui false, bagian kanan tidak perlu dijalankan.
void main() {
bool fun1() {
print("Fungsi telah dijalankan!");
return true;
}
bool left = false;
// Sisi kiri false, maka fun1() di kanan tidak berjalan
bool res = left && fun1();
print("Hasil akhir: $res");
}Code language: PHP (php)
Hasil eksekusi
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Hasil akhir: false
Code language: JavaScript (javascript)
Meskipun di dalam fun1 terdapat error atau pengecualian, tidak akan muncul pesan kesalahan karena fungsi sama sekali tidak dijalankan.
Contoh penggunaan logika AND
void main() {
String name = 'admin';
String password = '123321';
// && syarat terpenuhi hanya jika kedua sisi true
if (name=='admin' && password =='456654') {
print("Login berhasil");
} else {
print("Username atau password salah");
}
}Code language: JavaScript (javascript)
Hasil eksekusi
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Username atau password salahCode language: CSS (css)
3. Logika OR ||
Jika sisi kiri bernilai true, kode di sisi kanan tidak dijalankan dan langsung mengembalikan true.
| Ekspresi | Hasil |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
Lihat contoh berikut
void main() {
bool fun1() {
print("Fungsi dijalankan");
return true;
}
// Sisi kiri true, terjadi evaluasi pintas sehingga fun1() tidak berjalan
bool res = true || fun1();
print(res); // true
}Code language: PHP (php)
Karena sisi kiri operator || bernilai true, fungsi fun1 di sebelah kanan tidak akan dijalankan.

Dari dua saklar, lampu akan menyala jika minimal satu saklar tertutup (true).
void main() {
bool isParentAgree = true;
int age = 12;
if(age>=13 || isParentAgree){
print("Boleh masuk");
}
}Code language: JavaScript (javascript)
Ringkasan
A && B: Jika A bernilai false, langsung kembalikan false, B tidak akan diperiksa maupun dijalankan
A || B: Jika A bernilai true, langsung kembalikan true, B tidak akan diperiksa maupun dijalankan
Meningkatkan kecepatan eksekusi program sekaligus menghindari error (sering dipakai untuk pengecekan nilai null)
Contoh:
String? name;
// Hanya akses length jika name tidak null, evaluasi pintas menghindari error null
if(name != null && name.length > 0)
{
}Code language: JavaScript (javascript)
Jika langsung memanggil name.length akan menghasilkan error, karena name bernilai null dan tidak memiliki properti length. Karena ada pengecekan name != null di awal, apabila name null maka syarat pertama sudah false sehingga bagian belakang tidak dijalankan dan tidak ada error.
Prioritas ketiga operator logika
! > && > ||
Sama seperti operasi matematika, operator dengan prioritas tertinggi dihitung duluan. Gunakan tanda kurung
()jika ingin mengubah urutan perhitungan.
if (!done && (col == 0 || col == 3)) {
// ...Lakukan sesuatu...
}Code language: JavaScript (javascript)
Urutan perhitungan langkah demi langkah:
- Dalam kurung: hitung dulu
col == 0 || col == 3(cek apakah kolom bernilai 0 atau 3) - Lakukan pembalik nilai dengan
!done - Lakukan operasi
&&terhadap dua hasil sebelumnya
Contoh
void main() {
bool done = false;
int col = 3;
// Contoh resmi
if (!done && (col == 0 || col == 3)) {
print("Logika dijalankan: belum selesai dan kolom adalah 0 atau 3");
}
// Demo logika NOT !
bool isFinish = true;
print(!isFinish); // false
// Demo logika AND &&
int a = 10, b = 20;
if (a > 5 && b > 10) {
print("a lebih dari 5 DAN b lebih dari 10");
}
// Demo logika OR ||
int score = 55;
if (score < 60 || score > 90) {
print("Nilai tidak lulus ATAU nilai sangat bagus");
}
// Demo evaluasi pintas
bool func() {
print("Fungsi dijalankan");
return true;
}
false && func(); // Sisi kiri false, func tidak mencetak apapun
true || func(); // Sisi kiri true, func tidak mencetak apapun
}Code language: PHP (php)
Hasil eksekusi
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Logika dijalankan: belum selesai dan kolom adalah 0 atau 3
false
a lebih dari 5 DAN b lebih dari 10
Nilai tidak lulus ATAU nilai sangat bagusCode language: JavaScript (javascript)