01Last in, first out
A stack is an abstract data type: a list of elements where you can reach only one of them, the element at the top. You put new elements on top and take them off the top, so the principle is "Last In, First Out" (LIFO). Think of a pile of plates.
Elements of a stack are not indexed: there is no st[2]. That restriction is the whole point. Because you can only touch the top, every operation is O(1) and the code that uses a stack is easy to reason about.
Stacks are used in every programming language: the compiler uses one for syntax analysis, arithmetic expressions are evaluated with one, and recursion runs on the call stack.