На всякий случай напомню:
- Выражение - это конструкция языка, которая используется для вычисления значения.
- Операнд - это часть выражения. Обычно это переменная или константа.
- Оператор выполняет какие-либо действия над операндами. Например, оператор + выполняет сложение двух операндов. Большинство операторов работают с двумя операндами (это бинарные операторы), но есть и такие, которые работают с одним операндом (унарные операторы). Также бывают операторы, которые работают с большим количеством операндов, но это редкость.
- Операторы в языках программирования, также как и в математике, имеют приоритет - очередность выполнения.
Например, в этом выражении:
2 + 3 * 2
Сначала выполняется операция умножения (3 * 2), а потом к результату прибавляется число 2. В итоге результатом выражения будет число 8. Впрочем, не надо быть программистом, чтобы это понять - всё это мы знаем из математики. Однако в программировании есть и много других операторов. Если говорить о языке РНР, то список операторов с приоритетами приведён в таблице ниже.
Многие из операторов РНР были позаимствованы из языков С и Perl. Ну а саму таблицу я позаимствовал из одной книги по РНР (надеюсь, её автор на меня не сильно обидится, поскольку это общедоступная информация).
Колонка П в таблице означает приоритет оператора - от самого высокого до самого низкого. Хотя лично для меня такая очередность не является интуитивно-понятной. Я привык к тому, что высший приоритет имеет номер 1 (поскольку высший приоритет - это первая очередь). Но, как говорится, художник так видит. Так что вверху таблицы операторы с высшим приоритетом.
Например, оператор умножения (*) в таблице имеет приоритет 16 и находится выше оператора сложения с приоритетом 15. Это означает, что в случае, когда в одном выражении используется несколько операторов, например * и +, то сначала будет выполнена операция умножения (операция с высшим приоритетом), а потом - операция сложения (операция с низшим приоритетом).
Не обязательно запоминать все эти приоритеты. Я никогда этого не делаю, поскольку работаю с разными языками, и всё запомнить невозможно. Чтобы не ошибиться в приоритете, достаточно использовать простое правило, которое работает почти во всех языках:
Повысить приоритет можно с помощью круглых скобок
Например:
(2 + 3) * 2
Здесь сначала будет выполнено сложение, а потом - умножение, несмотря на то, что оператор умножения имеет более высокий приоритет по сравнению со сложением. Но с помощью круглых скобок мы “короновали” оператор сложения и сделали операцию сложения более важной в иерархии приоритетов.
Столбец ПВ в таблице означает порядок выполнения, который может быть:
- Л - операция выполняется слева направо
- П - операция выполняется справа налево
- Н - неассоциативный оператор
Большая часть операций выполняется слева направо. То есть если операторы имеют одинаковый приоритет, то в выражении они выполняются слева направо:
2 + 3 + 4
здесь сначала к 2 прибавляем 3, а потом к результату прибавляем 4. Неассоциативные операторы выполняют операции, где порядок выполнения неважен. У некоторых операндов порядок выполнения справа налево. Но я что-то с ходу не смог придумать хорошего примера, а время, которое я отвёл на написание статьи, уже закончилось )))) Так что если у кого есть пример - пишите в комментариях.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.