Эта статья появилась здесь потому, что по какой-то причине многие не понимают как пользоватся условиями AND, OR и NOT исходя из того, что написано на вики. Что ж, давайте попробуем разобраться.
Три простых факта, которые необходимо понять, чтобы научиться пользоваться условиями AND, OR и NOT:
- сами по себе эти условия ничего не делают, они являются лишь контейнерами, объединяющими в себе другие условия и задающими логику их выполнения
- логика выполнения применяется к вложенным в контейнер условиям, то есть к тем, что находятся внутри контейнера
- верхний уровень набора условий всегда использует логику выполнения AND
С точки зрения программирования можно сказать, что любое из условий-контейнеров AND, OR и NOT оборачивает вложенные в него условия абстрактными скобками. Для лучшего понимания ниже приведены примеры.
Верхний уровень (всегда AND)
Условия объединяются логическим оператором И. Например:

Все условия выполнены, если a
равно 1
И b
равно 2
И с
равно 3
. Эквивалент на абстрактном языке программирования:
if (a == 1 && b == 2 && c == 3) ...
Контейнер OR
Условия объединяются логическим оператором ИЛИ. Например:

Все условия выполнены, если a
равно 1
ИЛИ b
равно 2
ИЛИ с
равно 3
. Эквивалент на абстрактном языке программирования:
if (a == 1 || b == 2 || c == 3) ...
Контейнер NOT
Условия объединяются логическим оператором И и считаются выполненными только в случае, когда результат НЕ соответствует заданным критериям. Например:

Все условия выполнены, если a
НЕ равно 1
И b
НЕ равно 2
И с
НЕ равно 3
. Эквивалент на абстрактном языке программирования:
if (a != 1 && b != 2 && c != 3) ...
Комбинирование условий
Контейнеры могут быть объединены для выполнения более сложных наборов условий. Например:

Все условия выполнены, если a
равно 1
И (b
равно 2
ИЛИ с
равно 3
) И d
НЕ равно 4
. Эквивалент на абстрактном языке программирования:
if (a == 1 && (b == 2 || c == 3) && d != 4) ...
Вложенные контейнеры
Контейнеры могут быть вложены в другие контейнеры. Например:

Все условия выполнены, если a
равно 1
И (b
равно 2
ИЛИ (с
равно 3
И d
равно 4
)). Эквивалент на абстрактном языке программирования:
if (a == 1 && (b == 2 || (c == 3 && d == 4)) ...