Нелогично сначала давать задание про if/elif, и только в следующем уроке давать информацию про оператор сравнения "==", которая была нужна раньше для выполнения.
Сорри за долгий ответ, пропустил что-то уведомление.
А вы в каком браузере работаете, где бага проявилась?
в другом браузере заработал
✕ Your h2 element should be red.
и снова здравствуйте)
<style> h2 { color: blue;  }
</style> <h2>CatPhotoApp</h2>
✕ Your h2 element should be blue.
Ну а здесь то что?(
Потому что он в первом варианте пытается имеено получить свойство val. Это тоже самое что lookup["val"], то есть строчное значение "val". А во втором варианте запрашивается свойство по значению переменной val. То есть если val = "my_value", то будет получен lookup[val] === lookup["my_value"]
Я деталей не скажу, но насколько мне известно, там просто выполняется перебор, пока не будет достигнуто состояние, когда результат уже не меняется. То есть количество циклов может быть больше, чем кол-во элементов массива (потому что помимо >0 и <0 есть еще и 0 (когда сравниваемые элементы совпадают)). И да, не обязательно 1 и -1, можно именно меньше и больше нуля, и именно по этому самая коротка конструкция для сортировки числовых массивов - arr.sort((a,b) => a-b)