Como "e" e "ou" funcionam quando combinados em uma declaração?

Por alguma razão, essa função me confundiu:

def protocol(port):
    return port == "443" and "https://" or "http://"

Alguém pode explicar a ordem do que está acontecendo nos bastidores para que isso funcione da maneira que funciona.

Entendi isso até tentar:

Qualquer um)

def protocol(port):
    if port == "443":
        if bool("https://"):
            return True
    elif bool("http://"):
        return True
    return False

Ou B)

def protocol(port):
    if port == "443":
        return True + "https://"
    else:
        return True + "http://"

Isso é algum tipo de caso especial em Python, ou estou completamente entendendo mal como as instruções funcionam?

questionAnswers(7)

yourAnswerToTheQuestion