It always helps me to think of the English translation when trying to memorize and understand some the Cisco IOS settings I think are important.
Here are some Cisco IOS switchport configurations translated into English:
switchport mode trunk says: “Always trunk on this end, and I will send DTP to attempt to negotiate a trunk on the other end.”
switchport nonegotiate says: “Do not send or respond to DTP from this end. Disable all DTP on this port.” (Best used on user access ports, when trunking to non-Cisco switches, when trunking to a router, or if you are paranoid about fast convergence)
switchport mode dynamic desirable says: “Ask the other end to trunk using DTP and trunk if the negotiation succeeds. If DTP negotiation fails then become an access port.”
switchport mode dynamic auto says: “If the other end asks me to be a trunk with DTP, then become a trunk, but I wont initiate any negotitation from this end. If no one asks me to become a trunk then I will become an access port.”
switchport mode access says: “Never trunk on this end, and I will send out DTP to help my link partner reach the same conclusion.”
switchport trunk encapsulation says: “Do not negotiate the trunk protocol with DTP. Only use the trunk protocol specified in this command (isl or dot1q).
 Cisco routers do not talk DTP
 The process of DTP message exchange adds some delay in negotiating and bringing up a trunk. Use ‘switchport mode trunk’ + ‘switchport nonegotiate’ + ‘switchport trunk encapsulation’ for the fastest possible formation of a trunk.