Screen readers assume the content inside a table
is tabular, and reads it as such. E.g. "row 1, column 1: (contents)". If you use tables to lay out your site, this won t necessarily make any sense. You are telling the end-client you have data with tabular significance, when you actually don t.
By contrast, div
have no meaning other than "section", so screen readers make no attempt to signify them. You can use divs to make arbitrary visual breaks in your layout without impacting the meaning of the markup.
This is what we mean when we say "semantic" markup. Semantic means the markup accurately describes the meaning of the content inside of it - tables wrap tabular data, UL
s wrap unordered lists, etc.