Приоритет выполнения операндов и операторов. Почему так происходит?
Разница в примерах – в возвращаемом значении:alert(value) возвращает undefinedmyalert(value) возвращает value
Выражение A || B && C разбирается как A || (B && C)
Сначала оценивается A. Если оно приводится к false, требуется проверить второй аргумент ||, т.е.  (B && C)
Сначала проверяется B. Если оно приводится к false, то проверять C уже не нужно.
Алгоритм:
1. Вызываем первый alert
2. Получаем undefined 
3. Вызываем второй операнд в II
4. Получаем undefined и поэтому возвращаем его не проверяя второй операнд в &&undefined || undefined && 'до этого места проверка не доходит'undefined || 'что угодно' // 'что угодно'
undefined && 'что угодно' // undefined
Помимо undefined, подобное справедливо для всего, что кастуется в false.