We tell the browser what markup language to parse the document with by opening our document with a Document Type Declaration, or,

<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>

The HEAD element contains a document title, which will appear on the browser tab or title bar of a window, and any meta data associated with the document such a special media types, style sheets, scripts, and so on.

<head>
<title>Every document should have a title</title>
</head>

The BODY element is the container for all the content we wish to display in the webpage.

Hopefully with that primer you can see how a P element is constructed. The error message might be a generic one, since your markup contains several errors. This would be an empty element...

<p></p>

The author misuses the tag word. There are actually two tags, an OPENTAG and an ENDTAG which together form the container, or element. But we won't beat ourselves up if we happen to call them paragraph tags so long as we understand what is really in play.

It is generally considered bad practice to leave empty tags in a source document. There are exceptions, but they apply to a script driven document that has elements set out for it to populate, and even this is unnecessary, since our script can create elements as it needs them. You'll run into this in more detail once you begin to work with script.