Приоритет логических операторов в Dart
Несколько связок подряд считают не просто слева направо. Сначала идет отрицание, затем связка И, затем связка ИЛИ.
В следующем выражении сначала собирается правая часть, связка И. Ложь и ложь дают ложь. Эта ложь стоит справа от истины, и связка ИЛИ дает истину:
print(true || false && false); // true
Отрицание считается раньше связки И. Сначала ложь становится истиной. Затем эта истина сталкивается с ложью справа, и результат - ложь:
print(!false && false); // false
Выведите результат следующего выражения:
true && false || true
Выведите результат следующего выражения:
false || !false