Angular is based on four key concepts, templates, directives, controllers and scope. Templates contain most of the HTML and provide the structure to an application. Directives are used to extend the HTML in the templates themselves by using additional tags and attributes, and can perform tasks such as evaluating user interactions, or, manipulating data in some way. Controllers contain the logic that tells an application how to behave, for example, the actions that occur once a button is clicked. Finally, scope, this deals with the manipulation of data within an application, as well as the updating of the user interface following a user interaction.