не понимаю логики замены переменных в коде

Данная задача уже была, но на интересующий меня вопросы ответа не нашел. Здесь в решении в цикле WHILE идет замена переменных second_max, first_max = first_max, element,

1й - почему именно так на не наоборот first_max, element = second_max, first_max. Я проверил, что если использовать 2й вариант, код работать не будет.

2й - если использовать 1й вариант замены, то element`у присваивается новое значение, потом вводится новое значение (инпут()), разве оно не "перепишет" значение полученное заменой?

Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности. Гарантируется, что в последовательности есть хотя бы два элемента.

first_max = int(input())
second_max = int(input())
if first_max < second_max:
    first_max, second_max = second_max, first_max
element = int(input())
while element != 0:
    if element > first_max:
        second_max, first_max = first_max, element
    elif element > second_max:
        second_max = element
    element = int(input())
print(second_max)

Ответы (1 шт):

Автор решения: Алексей Белкин

@Leonfirebutton, посмотрите как работает Ваш Код. Думаю после анализа Вы Сами ответите на свои вопросы.введите сюда описание изображения

→ Ссылка