Get a value
Line 1 asks Temp? and waits. You type 18. input() gives back the text '18', int() turns it into the number 18, and = stores it in temp. Now the program has to make a decision.
if, elif, else
An if asks a question with a yes-or-no answer, called a condition. Line 2 asks: is temp at least 25? Python reads 18 from temp and works out 18 >= 25. The answer is a bool: False.
The colon ends the question; the lines under it, pushed in by four spaces, are its block. if runs its block only when the answer is True. It is False, so Python skips line 3.
elif means else if: a second question, asked only because the first answer was False. Python reads temp again and works out 18 >= 15. Yes: True.
The answer is True, so the elif block runs: line 5 prints Jumper. A block can hold many lines; all of them run, in order.
else has no question. Its block runs only when every question above it was False. One answer was True, so Python skips lines 6 and 7: Coat is never printed.
Line 8 is not indented, so it is in no block: it runs whatever the answers were. The program prints Bye! and ends. One run, one path: Jumper.
A new answer
Run it again and type 30. temp now holds 30, so line 2 works out 30 >= 25. This time the answer is True: same code, new value, different path.
Line 3 prints T-shirt. Then Python skips lines 4 to 7 without even asking the elif question: in an if chain, only the first True block runs. Line 8 prints Bye!
One slip
One slip to watch for: = stores a value, == asks whether two values are equal. Write if temp = 25: and Python refuses to run any of the file: a SyntaxError.
Try it yourself
;; step 1/10 · line 1: temp = int(input("Temp? "))
>>> text = input("Temp? ")
Temp? 18
>>> text
'18'
>>> temp = int(text)
>>> temp
18
>>> temp + 1 # a number: maths works
19
Python asks the questions from the top, runs the block of the first one that is True and skips every other block of the chain; the questions below it are not even worked out. The figure clears the terminal between the two runs; the $ is the terminal's own prompt. On macOS and Linux the command may be python3. In the real error message the ... is the full path to the file, and the figure wraps its long last line to fit the screen.