A design pattern is way to lay out or organise code in a way to solve a certain problem. Design patterns are established ways in which to organise code, so it makes the code not only easier to explain to other developers but also solves a problem. They are commonly known ways to organise and lay out code to solve common problems.
There are a lot of design patterns that can solve a lot of different problems. Just because design patterns exist does not mean that you need to use them, filling a code base with every design pattern will actually make the code less readable then using design patterns in the correct way. Choosing when and if to use certain design patterns is not something you can learn by being taught. Knowing which design patterns exist and what problems they solve are like tools being added to your toolbox, but you still have to learn to practice using the tools before you know how to use them correctly.