разница в том, что
1) = присваивает тому, что слева, то, что справа. == Ничего никуда не присваивает.
2) == сравнивает то, что слева с тем, что справа. = Ничего не сравнивает, а только возвращает дальше полученное значение.
Когда вы пишете if (x = y), то иксу присваивается значение у. Затем это значение попадает в проверку if. В С++ исторически нет типа правда/ложь(boolean), его заменяет int. 0 - ложь, всё остальное - правда. Поэтому когда y - не 0, выполняется тело if.
Писать присваивание в условных конструкциях - дурной тон, потому что такой код труднее читать. Зато можно написать что-то в духе while(*dst++ = *src++);
Домашнее задание - попробуйте понять, что тут написано, и какие типы должны быть у src и dst для того, чтобы это было осмысленно.
P.S. не смотрите больше видео "того парня", какой-то он странный путь выбрал для объяснения if-else.