Ответ 1
Ваши условия написаны неправильно.
В первом операторе if:
if (a ? b : c == 0)
если вы поместите значения, тогда он станет
if(10 ? 0 : 7 == 0)
означает, что он всегда будет возвращать 0.
Вот почему управление переходит к части else и там, оно становится
else if (7 = 7 || 10 && 0)
так как вы использовали здесь оператор "=" (c = c), он всегда будет правдой, поэтому он печатает "2".
Теперь вы хотите, чтобы этот код возвращал "1", а затем изменил оператор if таким образом.
if( (a ? b:c) == 0){...}
потому что оператор "==" имеет более высокий приоритет, чем тернарный оператор.