Основы php Математические операторы, приоритет операторов

Поділитися
Вставка
  • Опубліковано 27 жов 2024

КОМЕНТАРІ • 60

  • @WD40rus
    @WD40rus 3 місяці тому +2

    Пришел к Вам на канал после говнокурсов... Нет слов. За 3 видео узнал больше, чем за 2 месяца говнокурсов. Теперь Ваши видео + техдокументация и практика практика...

  • @АртемБолтов-й9й
    @АртемБолтов-й9й Рік тому +1

    пишу для поддержки канала и автора. спасибо за труд

  • @ИванПавлюк-я8ш
    @ИванПавлюк-я8ш 7 місяців тому +1

    Спасибо за урок! Классный пример ))) Люблю такие

    • @webQ
      @webQ  7 місяців тому

      Надеюсь что и более сложные темы смог донести, более менее, понятно

  • @ЗайнулаАлиев-ф8д
    @ЗайнулаАлиев-ф8д 4 роки тому +18

    самое лучшее что я видел из уроков, спасибо тебе

    • @webQ
      @webQ  4 роки тому +3

      И Вам спасибо за хороший отзыв

  • @user-wf6ol1fg1i
    @user-wf6ol1fg1i Рік тому +3

    Большое спасибо. По поводу формулы из 1 делает 7 , вроде понял, но не понял. Пока не задался в итоге получить другое число и понять ( не без примера кто где что в памяти держит ) так и не понял бы . php учу вот пару дней по вашим урокам. Но вы правы пока сам не попробуешь а не просто скопируешь - оно получится но не поймешь до конца по чему

  • @РобертПак-л7е
    @РобертПак-л7е 2 роки тому +2

    Спасибо за уроки , скачал ваш плейлист смотрю в оффлайне

  • @20mlnmoshi
    @20mlnmoshi 2 роки тому +3

    Шяс блин выучу php за 1 день )))

  • @A1_TR_812
    @A1_TR_812 2 роки тому +1

    Большое спасибо за ваш труд и ваши объяснения!

  • @AndresKaen
    @AndresKaen 2 роки тому +1

    Спасибо

  • @valeriiyevdochenko8905
    @valeriiyevdochenko8905 2 роки тому +2

    Не знал, что у += низкий приоритет. Мелочь, но приятно. Спасибо за урок.

  • @ЗапасЗнаний
    @ЗапасЗнаний 3 роки тому

    Все ясно и лаконично.

  • @supermel531
    @supermel531 3 роки тому +1

    Thank you very much!

    • @webQ
      @webQ  3 роки тому

      Nichts zu danken)))))

  • @ЮраБезлобов
    @ЮраБезлобов 3 роки тому +1

    Урок супер, спасибо)

  • @ПростоЯрик-ц3ч
    @ПростоЯрик-ц3ч 3 роки тому +1

    Спасибо за урок !!

  • @plutoalf5881
    @plutoalf5881 4 роки тому +4

    Здравствуйте, Денис. Хорошо объясняете. Спасибо. Но в сложном примере (с инкрементом) немного напутали (это мое мнение): первый $d++ равен 2; ++$d равен 3; их сумма равна 5; теперь самая первая переменная $d равна 2 (так как "единица" повысилась в первом действии. Таким образом сумма =7

    • @theholdfingersteam2399
      @theholdfingersteam2399 4 роки тому +3

      Да тут вообще х*йня какая то выходит чесс слово, не понимаю. Даже если взять просто пример $d++ + ++$d; то равно будет 3. Добавляется всего 2. И без разницы равно ли $d=10 то выйдет 12, даже если $d= 500 выйдет 502. Почему же не выходит 22 или 1002?? Думал как обычно пройдусь по основам php не тут то было.
      ------
      Теперь возьмем пример автора, $d += $d++ + ++$d; если вместо $d=1 поставить $d=10 то выходит 34.
      А если теперь поставить пример $d += $d++ + $d++; выходит 33. Видимо автор прав с тем что цифра уходит в память и потом в момент (++d) начинает считать. Кароче х*й его знает, мне тут проект делать а я с этим сижу))

    • @dimonsan2504
      @dimonsan2504 4 роки тому

      Логично

    • @dasman6163
      @dasman6163 4 роки тому +13

      Пересмотрите внимательно, он правильно все объяснил. Первый $d++(постфиксная форма) равен 1, т.к. сначала идет подставление 1 вместо $d и только потом увеличение, но это увеличение не возвращается обратно к переменной, код идет дальше(направо) и поэтому значение первой переменной равно 1. Второй ++$d(префиксная форма) равен 3, т.к. до этой второй переменной интерпретатор увеличил ее значение до 2 и здесь это значение сразу увеличивается до 3(т.к. это префиксная форма) и мы получаем 1 + 3 = 4. Последнее значение переменной $d = 3, поэтому запись $d +=4(что равнозначно $d = $d +4) возвращает 7.

    • @WeallHWT
      @WeallHWT 4 роки тому +2

      ​@@dasman6163 Тысяча чертей!!! Лайк автору ​ @dasman 616 , объяснил доходчивее чем автор видео! Двигаем в топы!

    • @denisrich4851
      @denisrich4851 3 роки тому

      да он правильно разъяснил как работает интерпретатор, а так респект , нормально обьясняет

  • @xmelsky
    @xmelsky 3 роки тому +3

    т.е. можно свести к тому, что $d++ + ++$d; читается как:
    сначала читаем $d и подставляем в выражение 1, затем изменяем на 1 (теперь $d = 2) "плюс" сначала изменяем $d на 1 (теперь $d = 3), затем читаем и подставляем в выражение. -> получим запись после подстановок
    $d += 1 + 3
    и помним, что $d уже 3. значит имеем 3 += 1 + 3 что в итоге даст 7

  • @user-bk7tx6vj7h
    @user-bk7tx6vj7h Рік тому

    👍👑

  • @g_a_m_b_e_t_t_o_r8920
    @g_a_m_b_e_t_t_o_r8920 3 роки тому

    супер!!)) интересный урок ! кстати в js ответ будет 5))) Спасибо за урок !!

    • @webQ
      @webQ  3 роки тому

      Да, абсолютно верно и Вы большой молодец если Вы это знали, не прогнали для галочки,или если прогнали, но поняли почему))))

  • @bistrec
    @bistrec 4 роки тому +6

    Добил 100 лайков :)

    • @webQ
      @webQ  4 роки тому +1

      Спасибо большое

    • @bistrec
      @bistrec 4 роки тому +2

      @@webQ всегда рад помочь коллеге :) хоть мне и 13 лет

    • @webQ
      @webQ  4 роки тому

      @@bistrec возраст - не показатель человека и его знаний

    • @bistrec
      @bistrec 4 роки тому

      @@webQ я знаю:) у меня друг есть, который больше меня в программировании знает, но ему 13 лет. Блин ему и заказчики уже пишут, а мне никто не пишет и найти не могу :(

    • @webQ
      @webQ  4 роки тому +1

      @@bistrec всему свое время. Пока есть возможность, поработайте на свои знания и навыки. Заказчики придут, когда придет имя. А имя придет, когда придут знания. Лучше потерять лишний год на поднятие своего уровня, чем пол жизни биться на фриланс биржах за копеечные проекты на wordpress

  • @mildewlight
    @mildewlight 4 роки тому

    Здравствуйте. Из видео получается, что ниже приведенные примеры идентичны. Но в первом случае результат 7, а во втором 6.
    $d += $d++ + ++$d;
    $d = $d + $d++ + ++$d;

    • @webQ
      @webQ  4 роки тому

      потому что разный приоритет выполнения операций. Первый пример в javascript вообще ответ 5 даст))))

    • @mildewlight
      @mildewlight 4 роки тому

      @@webQ, спасибо. Попробую разобраться.

    • @mildewlight
      @mildewlight 4 роки тому

      @@webQ, как же описать для легкого понимания приведенные примеры, чтобы можно понять как что работает?

    • @mildewlight
      @mildewlight 4 роки тому +1

      @@webQ, фу-у-у, разобрался. По-своему конечно, но работает. В первом случае (не забываем, что пример с $d = 1), я считаю так: приоритет у меня после знака = и получается что 1+1=2. Далее я решил, что PHP присвоил результат 2 всем 3-м переменным $d, потому что они все одинаковые, то есть '$d'. Потом я умножил 2 на 3, потому что написанных у нас переменных $d 3 шт., а одна зашифрована, сокращена и вот этой он не присваивает 2, а остается 1. И как итог - 7. То есть 2*3+1. И эта зашифрованная всегда остается 1-й, даже, если присвоить переменной $d 32. Дальше я вместо 1 присвоил 3 и посчитал по тому же принципу и угадал - 13. Ведь 3+1=4. Теперь все три переменные становятся 4-ми. Умножаем на три получаем 12 и плюсуем зашифрованную 1. Далее присвоил переменной -1. Результат конечно же -1. Ведь -1+1=0. 0*3 и плюсуем 1. Второй вариант проще. Приоритет после первого плюса. С третьей переменной считаю. К примеру, переменной присвоил 2. Итак, 2+1=3. И дальше просто * на три. Переменную до знака = не трогаю. И результат - 9. Смешно конечно как я считаю, но главное могу понять, каким может быть результат.

    • @АртемЗолотых-щ9г
      @АртемЗолотых-щ9г 3 роки тому

      Разобрался со вторым случаем:
      Для наглядности запишу в разные переменные
      результат = x + y + z
      php сначала рассматривает первую часть x + y ($d + $d++)
      из этого выражения сначала $d++ ( y = 1, но $d уже становится 2)
      из этого выражения следует: $d + 1 (где $d = 2) значит (2 + 1) (x + y)
      Дальше рассматривается z (++$d)
      $d = 2 , значит z = 3
      результат = 2 + 1 + 3 = 6

  • @VakaramGolang
    @VakaramGolang Рік тому +1

    приоритет серьёзный в php

  • @leoneqful
    @leoneqful Рік тому

    Еще допишу, что гораздо правильнее объяснить префиксную и постфиксну форму так:
    $d = 1; echo $d++; //будет 1, так первее идет возврат значения $d, а потом увеличение происходит, которое сохраняется в памяти в начальной переменной
    echo $d; //а вот тут уже будет 2 при обращении к переменной
    echo ++$d; //будет 2, так как увеличение происходит до возврата значения
    echo $d // будет 2 снова
    Мож кому пригодится, так лучше объяснено. Вообще подробно просто по инфе о Операторы инкремента и декремента

  • @advokats086
    @advokats086 4 роки тому

    ПОЧЕМУ В ПРОДАКШЕНЕ НЕ ИСПОЛЬЗУЕТСЯ ОПИСАНОЕ ВЫРАЖЕНИЕ(ИНКРЕМЕНТ + ДЕКРЕМЕНТ) ? ГДЕ ВОЗМОЖНО ПРИМЕНИТЬ ТАКОЕ ВЫРАЖЕНИЕ (ТЕОРЕТИЧЕСКИ). НУ К ПРИМЕРУ ДАЖЕ ЕСЛИ ВЗЯТЬ ДРУГОЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ?

    • @webQ
      @webQ  4 роки тому

      Не инкремент плюс дикремент, а выражения с неявным приоритетом операторов. В связи с тем что сайт может обслуживать программист и сильный программист, но который, в качестве профилирующего языка будет знать другой язык и с другим приоритетом операторов

  • @Hello_money_666
    @Hello_money_666 4 роки тому

    Угарнул с примера)

  • @СергейПресняков-о4р

    А тут есть операторы "целочисленное деление" и "остаток от деления"?

    • @webQ
      @webQ  4 роки тому

      Остаток от деления, как и во всех языках, это знак %, а, простите, в каком то языке есть оператор целочисленного деления? На сколько мне известно есть функции округления, но не операторы

    • @СергейПресняков-о4р
      @СергейПресняков-о4р 4 роки тому

      @@webQ Ну в python есть //, вроде даже в С такое есть, давно его пробовал, не берусь наверняка утверждать.

    • @webQ
      @webQ  4 роки тому +1

      @@СергейПресняков-о4р да, посмотрел сейчас, действительно в python есть такой оператор, в php из коробки его нет. Но достаточно будет привести результат к целочисленному типу и тогда дробная часть отбросится или можно округлить в меньшую сторону при помощи функции floor

  • @xmelsky
    @xmelsky 3 роки тому

    преинкремент (сначала изменяем переменную, потом читаем) лучше всего было объяснить на примере:
    $d = 1;
    $c = ++$d;
    суть этого оператора, что после этой строчки $c имеет такое же значение как и $d, т.е. со значением 2. другими словами, прежде чем интерпретатору получить значение для $c он должен его вычислить для $d.
    В свою очередь, постинкремент (сначала читаем переменную, затем изменяем) делает так, что $c будет иметь значение 1, тогда как $d будет 2. Т.е. сначала читает для $c значение из $d, затем изменяет $d.
    $d = 1;
    $c = $d++;
    т.е. тут мы получим $c со значением 1.
    Можно еще иначе, кому все еще не понятно. порядок интерпретации выражения -> слева направо. представим два плюса ++ как выражение ($d=$d+1). И теперь мы можем записать выражение иначе:
    $c = ($d=$d+1)$d; - т.е. интерпретатор сначала должен выполнить скобки (это не валидная запись, просто для понимания), и лишь потом взять ЗНАЧЕНИЕ переменной $d, которое к этому моменту уже 2, значит в $c пойдет 2.
    и второй пример,
    $c = $d($d=$d+1); - т.е. интерпретатор уже может взять ЗНАЧЕНИЕ переменной $d, которое к этому моменту еще 1 (напомню это второй пример), и лишь затем проведет операцию в скобках, т.е. увеличит значение $d. именно поэтому во втором примере $c будет 1.

    • @webQ
      @webQ  3 роки тому +1

      А, ну, наверное, Ваше объяснение именно понятно... Я не понял, но, наверное, новичкам зайдет.... Надеюсь...

  • @leoneqful
    @leoneqful Рік тому

    Мож пригодится кому, а то во время объяснений не совсем понял, додумывал.
    Посмотрев пример с d++ я понял какая это дичь, это в примере не тоже самое, что просто d+1. Не сразу догнал, то вывод сделал, что когда
    $d = 1;
    $d++;
    var_dump($d); Будет равен 2, но выше в самой строчке значение не обновляется, там будет 1.
    $++d;
    var_dump($d); Тут же в итоге будет тоже 2, но выше в строчке он обновляется на месте и там будет 2.
    И поэтому: $d = 1; (2) (3)
    $d = $d + ($d++ + ++$d); (упростил его) В общем при первом действии в скобках будет 2 и верхняя переменная обновится, но в строчке она не обновилась и там 1 остался, а далее второе слагаемое наоборот в строчке обновится, взял 2 как начальное значение, увеличим на 1 и выйдет 3 и на месте обновился и $d = 3 стало выше. И выйдет 3 + (1+3) = 7.
    Так если изменить пример:
    $d = $d + (++$d + ++$d);
    То тут всё будет обновлятся в строке прям, 3 + (2 + 3) = 8
    Так и $d = $d + ($d++ + $d++); 3 + (1 + 2) = 6
    Мож кому пригодится, чтоб понять, но я честно сам не понял на кой в этом разбираться. Но так проще использовать именно ++d, так просто понятнее, что оно обновляется на месте и ведет себя как d+1

  • @KuKu_RuKu88
    @KuKu_RuKu88 4 роки тому

    Спасибо

    • @webQ
      @webQ  4 роки тому

      Пожалуйста