Files
German-Learning/lessons/0001-v2-word-order.html
2026-06-30 13:24:04 +02:00

263 lines
9.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lesson 1 — V2 Word Order</title>
<link rel="stylesheet" href="../assets/style.css">
</head>
<body>
<div class="page">
<p class="subtitle">Lesson 1 of your German course</p>
<h1>V2 Word Order: The Rule That Fixes 40% of Your Errors</h1>
<p class="subtitle">B1.2 &middot; Grammar &middot; ~15 minutes</p>
<h2>Why this matters</h2>
<p>
German verbs are obsessed with position. In a main clause, the <strong>finite verb always occupies the second slot</strong> — the second grammatical unit, not the second word. This is called the <em>Verb-Second</em> (V2) rule and it affects every sentence you speak or write in German.
</p>
<p>
In English, the subject almost always comes first. German doesn't care. You can put a time expression, a location, a reason, or an adverb in front — but the moment you do, the subject has to step aside and the verb takes slot two.
</p>
<div class="rule-box">
<strong>The Rule</strong>
<div class="formula">[ Front element ] &rarr; VERB &rarr; Subject &rarr; rest of sentence</div>
</div>
<h2>The pattern in your own sentences</h2>
<p>These are the exact constructions you've been writing — and the correction each time:</p>
<table>
<tr>
<th>What you wrote</th>
<th>What it should be</th>
<th>Front element</th>
</tr>
<tr>
<td class="wrong">Heute <em>ich werde</em> Code-Review machen</td>
<td class="right">Heute <em>werde ich</em> Code-Review machen</td>
<td>Heute (time)</td>
</tr>
<tr>
<td class="wrong">Am Freitag <em>ich hat</em> gearbeitet</td>
<td class="right">Am Freitag <em>habe ich</em> gearbeitet</td>
<td>Am Freitag (time)</td>
</tr>
<tr>
<td class="wrong">Danach <em>ich werde</em> weiter</td>
<td class="right">Danach <em>werde ich</em> weiter</td>
<td>Danach (sequence)</td>
</tr>
<tr>
<td class="wrong"><em>Weiss ich nicht</em> was...</td>
<td class="right"><em>Ich weiß</em> nicht, was...</td>
<td>Subject first → no inversion needed</td>
</tr>
</table>
<p>
Notice the last row: when the subject is already in front, there is <em>no inversion</em>. The rule only triggers when something other than the subject occupies slot one.
</p>
<h2>Common front elements that trigger inversion</h2>
<table>
<tr><th>Type</th><th>Examples</th></tr>
<tr><td>Time</td><td><code>Heute, Gestern, Am Freitag, Um 9 Uhr, Letzte Woche</code></td></tr>
<tr><td>Sequence</td><td><code>Dann, Danach, Zuerst, Anschlie&szlig;end, Zuletzt</code></td></tr>
<tr><td>Contrast / addition</td><td><code>Trotzdem, Also, Au&szlig;erdem, Dennoch</code></td></tr>
<tr><td>Reason phrase</td><td><code>Deshalb, Daher, Deswegen</code></td></tr>
<tr><td>Location</td><td><code>In Heitersheim, Im B&uuml;ro, Zu Hause</code></td></tr>
<tr><td>Object moved to front</td><td><code>Das Ticket habe ich gestern geschlossen.</code></td></tr>
</table>
<h2>A trick that never fails</h2>
<p>
After you write a sentence, hold up one finger for the first unit. Ask: <em>is this the verb?</em> If no — your next word <strong>must</strong> be the verb, and the subject comes after it. Count on your fingers if needed. This catches the error every time before it leaves your head.
</p>
<hr style="border:none; border-top: 1px solid #ddd; margin: 2.5rem 0;">
<h2>Drill — choose the correct word order</h2>
<p>All sentences are grounded in your actual life. Eight questions. Immediate feedback after each answer.</p>
<div class="quiz-section" id="quiz"></div>
<div class="score-bar" id="score-bar">
<span class="score-number" id="score-number"></span><span id="score-comment"></span>
</div>
<hr style="border:none; border-top: 1px solid #ddd; margin: 2.5rem 0;">
<h2>Primary source for this lesson</h2>
<p>
<a href="https://learngerman.dw.com/en/nicos-weg/c-36519691" target="_blank">DW Nicos Weg — B1</a> covers V2 word order with video examples in natural conversational German. Episodes 3135 are particularly good for this pattern. Free, no account needed.
</p>
<div class="ask-teacher">
<strong>Ask your teacher:</strong> Anything from this lesson that felt unclear — a sentence that confused you, or a case where you're unsure whether inversion applies — paste it into the chat and ask. The teacher is here to dig into it with you.
</div>
<div class="lesson-nav">
<strong>Related:</strong>
<a href="../reference/word-order.html">Word Order Reference Sheet</a> &middot;
Lesson 2 coming next session
</div>
</div>
<script>
const questions = [
{
prefix: "Heute",
suffix: "einen Code-Review gemacht.",
correct: "habe ich",
distractor: "ich habe",
feedback: "<strong>Heute</strong> is a fronted time element → verb comes second: <em>Heute habe ich …</em>"
},
{
prefix: "Am Freitag",
suffix: "an dem Sprint gearbeitet.",
correct: "habe ich",
distractor: "ich habe",
feedback: "<strong>Am Freitag</strong> is a fronted time phrase → inversion required: <em>Am Freitag habe ich …</em>"
},
{
prefix: "Danach",
suffix: "die E-Mail an Herrn Amann geschrieben.",
correct: "habe ich",
distractor: "ich habe",
feedback: "<strong>Danach</strong> (sequence adverb) triggers inversion: <em>Danach habe ich …</em>"
},
{
prefix: "In Heitersheim",
suffix: "viele schöne Spazierwege.",
correct: "gibt es",
distractor: "es gibt",
feedback: "<strong>In Heitersheim</strong> is a fronted location → verb second: <em>In Heitersheim gibt es …</em>"
},
{
prefix: "Normalerweise",
suffix: "um acht Uhr im Büro.",
correct: "bin ich",
distractor: "ich bin",
feedback: "<strong>Normalerweise</strong> (manner adverb) triggers inversion: <em>Normalerweise bin ich …</em>"
},
{
prefix: "Nach der Schule",
suffix: "oft Hunger.",
correct: "haben die Kinder",
distractor: "die Kinder haben",
feedback: "<strong>Nach der Schule</strong> is fronted → verb must come second, subject after: <em>Nach der Schule haben die Kinder oft Hunger.</em>"
},
{
prefix: "Letzte Woche",
suffix: "das Deployment abgeschlossen.",
correct: "haben wir",
distractor: "wir haben",
feedback: "<strong>Letzte Woche</strong> fronted → verb second: <em>Letzte Woche haben wir das Deployment abgeschlossen.</em>"
},
{
prefix: "Deshalb",
suffix: "dir eine kurze Nachricht.",
correct: "schreibe ich",
distractor: "ich schreibe",
feedback: "<strong>Deshalb</strong> (reason connector) triggers inversion: <em>Deshalb schreibe ich dir eine kurze Nachricht.</em>"
}
];
// Build quiz HTML
const quiz = document.getElementById('quiz');
let answered = 0;
let correct = 0;
const total = questions.length;
// Pre-determined option order: ensures correct answer appears in both positions across the quiz
// true = correct first, false = distractor first
const correctFirst = [true, false, false, true, false, true, false, true];
questions.forEach((q, i) => {
const opts = correctFirst[i]
? [q.correct, q.distractor]
: [q.distractor, q.correct];
const block = document.createElement('div');
block.className = 'question-block';
block.id = 'q' + i;
block.innerHTML = `
<div class="question-text">
<strong>${i + 1}.</strong> &ldquo;${q.prefix} <span class="blank">___________</span> ${q.suffix}&rdquo;
</div>
<div class="options">
${opts.map((opt, j) => `<button class="option-btn" onclick="answer(${i}, '${opt.replace(/'/g, "\\'")}', this)">${opt}</button>`).join('')}
</div>
<div class="feedback" id="fb${i}"></div>
`;
quiz.appendChild(block);
});
function answer(i, chosen, btn) {
const q = questions[i];
const block = document.getElementById('q' + i);
const fb = document.getElementById('fb' + i);
const buttons = block.querySelectorAll('.option-btn');
// Disable all buttons in this block
buttons.forEach(b => b.disabled = true);
const isCorrect = chosen === q.correct;
answered++;
if (isCorrect) {
correct++;
block.classList.add('correct');
btn.classList.add('selected-correct');
fb.className = 'feedback show correct-fb';
fb.innerHTML = '&#10003; Correct. ' + q.feedback;
} else {
block.classList.add('incorrect');
btn.classList.add('selected-incorrect');
fb.className = 'feedback show incorrect-fb';
fb.innerHTML = '&#10007; Not quite. ' + q.feedback;
// Reveal correct answer
buttons.forEach(b => {
if (b.textContent.trim() === q.correct) b.classList.add('reveal-correct');
});
}
if (answered === total) showScore();
}
function showScore() {
const bar = document.getElementById('score-bar');
const num = document.getElementById('score-number');
const comment = document.getElementById('score-comment');
bar.classList.add('show');
num.textContent = correct + ' / ' + total;
if (correct === total) {
comment.textContent = 'Perfect. V2 is clicking. Ready to drill the next pattern.';
} else if (correct >= 6) {
comment.textContent = 'Solid — V2 is mostly there. Review the ones you missed and revisit tomorrow.';
} else if (correct >= 4) {
comment.textContent = 'The pattern is forming. Run this lesson again in 24 hours to consolidate it.';
} else {
comment.textContent = 'Keep the rule visible when you write today. Run this drill again before tomorrow\'s session.';
}
}
</script>
</body>
</html>